給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。
本題中,一棵高度平衡二叉樹定義為:
乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。
樹的高度:從結點x向下到某個葉結點最長簡單路徑中邊的條數
思路一:從下倒上遍歷,先判斷當前節點的左右子節點是否平衡。如果不平衡返回-1,平衡返回相應高度,當存在不平衡的子樹時,整個樹也就不平衡了
/**
* definition for a binary tree node.
* public class treenode
* }*/class
solution
else}/*
從下向上遍歷,先判斷當前節點的子節點,再判斷當前節點
*/public
intheight
(treenode node)
int leftheight =
height
(node.left)
;int rightheight =
height
(node.right)
;//當找到高度差大於1的結點或已經存在這樣的結點時,返回-1
if(leftheight ==-1
|| rightheight ==-1
|| math.
abs(leftheight - rightheight)
>1)
else
}}
思路二:從上向下遍歷,每到乙個節點計算它的左右節點高度,判斷是否平衡,這個演算法的時間複雜度是比上面思路大的,因為每個節點都會重複計算下面節點的高度
/**
* definition for a binary tree node.
* public class treenode
* }*/class
solution
else
}public
intheight
(treenode node)
else
}}
leetcode 110 平衡二叉樹 平衡二叉樹
leetcode 110 平衡二叉樹 平衡二叉樹要求所有節點的左右子樹的高度差小於1,因此,只需在遍歷的時候返回其左右子樹的深度。definition for a binary tree node.public class treenode treenode int val treenode int...
LeetCode110 平衡二叉樹
給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。本題中,一棵高度平衡二叉樹定義為 乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。示例 1 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回true。示例 2 給定二叉樹 1,2,2,3,3,null,nul...
LeetCode 110 平衡二叉樹
給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。本題中,一棵高度平衡二叉樹定義為 乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。示例 1 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回true。示例 2 給定二叉樹 1,2,2,3,3,null,nul...