二叉樹求最大,最小深度是二叉樹很基本的問題,基本上就是簡單的遞迴問題!
首先明確一下二叉樹深度的定義:從根節點到葉子節點的深度
二叉樹的節點無外乎三種狀態:
1.左右子樹皆存在
2.為葉子節點,左右子樹皆為null
3.另外一種就是乙個子樹為null,另乙個非空。
二叉樹其實就是遞迴遍歷的思想,首先想遞迴結束的條件,大部分時間都是葉子節點(此時下一級左右子樹為null)
此時遞迴函式應該怎麼做,return 0 (or else);另外當二叉樹為空樹時間,返回值應該為多少;
然後開始設計演算法,並手動執行一下看是否可行。
比如最小子樹,乙個子樹為空,另乙個非空,就需要考慮
最小深度:
當節點為null時間,return 0;
當節點乙個子樹為空,乙個非空時間,非空的那邊子樹不用參與比較(直接置為最大in),
當左右皆存在,就很明顯,求min+1
/**
* definition for binary tree
* public class treenode
* }*/public class solution
} private int minrec(treenode root)
else if(root.right == null)
else
}}
二叉樹最大深度和最小深度
給定乙個二叉樹,找出其最大深度。二叉樹的深度為根節點到最遠葉子節點的距離。如果二叉樹為空,則深度為0 如果不為空,分別求左子樹的深度和右子樹的深度,去最大的再加1,因為根節點深度是1,要加進去。int maxdepth treenode root 給定乙個二叉樹,找出其最小深度。二叉樹的最小深度為根...
二叉樹 最大深度和最小深度
leetcode 二叉樹的最大深度 leetcode 二叉樹的最小深度 我們知道完全二叉樹,是可以根據節點數量進行計算出深度的,但是非完成二叉樹呢 他就不滿足了,樹結構體 public class treenode 二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。說明 葉子節點是指沒有子節點...
二叉樹深度(最大和最小)
最大深度 definition for a binary tree node.struct treenode int maxdepth struct treenode root 二叉樹類的問題都會考慮採用遞迴的方式進行求解,因為二叉樹本身就是遞迴定義的。最小深度int mindepth treeno...