剑指offer之二叉树的深度和平衡二叉树

66 阅读1分钟

二叉树深度

求二叉树深度

本题解题关键 树的深度=Math.max(左子树深度,右子树深度)+1

var maxDepth = function(root) {
if(!root){
return 0
}
return Math.max(maxDepth(root.left),maxDepth(root.right))+1
}

平衡二叉树

求是否是平衡二叉树

本题关键在于以每一个节点为根节点,判断左右子树深度差是否<2
所以本题一个重点就是求深度。本题思路是一个从上至下的判断

var isBalanced = function(root) {
if(!root){
return true
}
return Math.abs(back(root.left)-back(root.right))<2&&isBalanced(root.left)&&isBalanced(root.right)
}

//求深度的函数
function back(node){
if(!node){
return 0
}
return Math.max(back(node.left),back(node.right))+1
}