平衡二叉樹
力扣題目
思路:
- 首先確定為后序遍歷(求高度相關)
- 遞歸三部曲
var isBalanced = function(root) {
var getHeight = function(node){
if(!node) return 0
let leftHeight = getHeight(node.left)
let rightHeight = getHeight(node.right)
if(leftHeight === -1) return -1
if(rightHeight === -1) return -1
if(Math.abs(leftHeight-rightHeight) >1) return -1
return 1+Math.max(leftHeight,rightHeight) //// 以當前節點為根節點的樹的最大高度
}
return getHeight(root) !== -1
};
二叉樹的所有路徑
力扣題目
思路:
image.png
var binaryTreePaths = function(root) {
let path=[]
let res =[]
let travel=function(node){
path.push(node.val)
if(!node.left && !node.right){
res.push(path.join('->'))
return
}
if(node.left){
travel(node.left)
path.pop()
}
if(node.right) {
travel(node.right)
path.pop()
}
}
travel(root,path)
return res
};
左葉子之和
注意:左葉子的定義
image.png
關鍵問題:如何判斷終止條件。若與前文的判斷條件一致,只能判斷是否為葉子結點,而不能判斷為左葉子結點
力扣題目鏈接
思路:
遞歸到倒數第二層的結點。收集其后代的左葉子結點的值。