您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關如何找出python二叉樹的最大深度,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
1,問題簡述
給定一個二叉樹,找出其最大深度。二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。說明: 葉子節點是指沒有子節點的節點。
2,示例
給定二叉樹 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回它的最大深度 3 。
3,題解思路
根據遞歸的方式進行解決,這里也根據隊列的特點進行了另外一種方式的解決,不過隊列的這種方式耗時還是比較明顯的
4,題解程序
import java.util.LinkedList;
import java.util.Queue;
public class MaxDepthTest2 {
public static void main(String[] args) {
TreeNode t1 = new TreeNode(3);
TreeNode t2 = new TreeNode(9);
TreeNode t3 = new TreeNode(20);
TreeNode t4 = new TreeNode(15);
TreeNode t5 = new TreeNode(7);
t1.left = t2;
t1.right = t3;
t3.left = t4;
t3.right = t5;
int maxDepth = maxDepth3(t1);
System.out.println("maxDepth = " + maxDepth);
}
public static int maxDepth(TreeNode root) {
if (root == null) {
return 0;
}
return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
}
public static int maxDepth3(TreeNode root) {
if (root == null) {
return 0;
}
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
int level = 0;
while (!queue.isEmpty()) {
int size = queue.size();
level++;
for (int i = 0; i < size; i++) {
TreeNode treeNode = queue.poll();
if (treeNode.left != null) {
queue.add(treeNode.left);
}
if (treeNode.right != null) {
queue.add(treeNode.right);
}
}
}
return level;
}
}
5,題解程序圖片版
二叉樹的最大深度還是比較常用的,這里自己給出了兩種方式進行解決,一個是根據遞歸的方式進行解決,利用系統棧的內容來解決,另外一個就是根據隊列的特點進行解決,這里根據自己的喜好來解決吧,不過自己想說的這張圖特別好看
上述就是小編為大家分享的如何找出python二叉樹的最大深度了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。