難度:簡單bash
涉及知識:樹、廣度優先搜索ui
題目地址:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/spa
題目內容:code
給定一個二叉樹,找出其最大深度。
二叉樹的深度爲根節點到最遠葉子節點的最長路徑上的節點數。
說明: 葉子節點是指沒有子節點的節點。
示例:
給定二叉樹 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回它的最大深度 3 。
複製代碼
題目給定用例 [3,9,20,null,null,15,7]
輸入方法的root元數據:
let root = {
val: 1,
left: {
val: 2, left: null, right: null
},
right: {
val: 3,
left: {
val: 4, left: null, right: {
val: 5,
left: {
val: 6, left: null, right: null
},
right: {
val: 7, left: null, right: null
}
},
},
right: {
val: 8, left: null, right: null
}
}
};複製代碼
var maxDepth = function (root) {
if (!root) {
return 0;
}//檢查輸入的元數據
//初始化最大深度爲1
let longestDepth = 1;
let getDepth = function (root, depth) {
if (!root) {
return;//檢測輸入該節點的值,若爲空則表明此路線已遍歷到底
}
if (root.left || root.right) {
depth += 1;
if (depth > longestDepth) {
longestDepth = depth;//當前遍歷層級保持最大,由於有可能遍歷回上層的depth
}
getDepth(root.left, depth);//優先遍歷左側子節點
getDepth(root.right, depth);
}
}
getDepth(root, 1);
return longestDepth;
}複製代碼
執行用時 :200 ms, 在全部 JavaScript 提交中擊敗了5.23%的用戶
內存消耗 :44.6 MB, 在全部 JavaScript 提交中擊敗了5.15%的用戶複製代碼
var maxDepth1 = function (root) {
if (!root) {
return 0;
}
return Math.max(maxDepth1(root.left), maxDepth1(root.right)) + 1;
};複製代碼