輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意節點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹。
示例 1:
給定二叉樹 [3,
9,20,null,null,15,
7]3/ \
920/ \
157返回 true 。
示例 2:
給定二叉樹 [1,
2,2,
3,3,null,null,4,
4]1/ \
22/ \
33/ \ 44
返回 false 。
限制:
0 <= 樹的結點個數 <= 10000
在遍歷每乙個節點時,呼叫函式maxdepth得到它的左,右子樹的深度。如果每個節點的左右子樹深度相差都不超過1,那麼按照定義就是一棵平衡二叉樹。
/**
* definition for a binary tree node.
* struct treenode
* };
*/class
solution
bool
isbalanced
(treenode* root)
};
上述**固然簡潔,但是每乙個節點會被重複遍歷多次,效率不高。
每個節點只遍歷一次解法,用後序遍歷的方式遍歷二叉樹的每個節點,那麼在遍歷到乙個節點之前我們就已經遍歷了它的左、右子樹。只要在遍歷每個節點的時候記錄它的深度,我們就可以一邊遍歷一邊判斷每個節點是不是平衡的。
劍指offer 55 II 平衡二叉樹
題目鏈結 輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意節點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹。示例 1 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7 返回 true 示例 2 給定二叉樹 1,2,2,3,3,null,nu...
劍指offer55 II 平衡二叉樹
題目 輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹。分析 平衡二叉樹 balance tree 的定義是 二叉樹中任意節點的左右子樹的深度相差不超過1。注意是任意節點,並不只是根節點的 左深度 右深度 還有其子樹也必須是平衡二叉樹。從該定義也可知是利用遞迴來解決這個問題。class soluti...
劍指 Offer 55 II 平衡二叉樹
輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹 二叉樹中任意節點的左右子樹的深度相差不超過1,則是平衡二叉樹 回顧遞迴求深度的方案,是先求得左右子樹的深度,然後進一步得到當前節點的深度,即先左右子樹,再根節點 可以直接加入乙個全域性變數記錄當前是否平衡,並額外引入乙個邏輯來比較子樹的深度 bfs迭...