剑指offer(Java实现) 平衡二叉树
生活随笔
收集整理的這篇文章主要介紹了
剑指offer(Java实现) 平衡二叉树
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述:
輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹
思路:
根據平衡二叉樹的特性:平衡因子的絕對值 <= 1。
因此,本題的重點應在于求解左子樹、右子樹的深度。
代碼實現:
public class Solution {public boolean IsBalanced_Solution(TreeNode root) {if (root == null) {return true;}int left = getDepth(root.left);int right = getDepth(root.right);// 求左右子樹的差值int diff = left - right;if ((diff >= -1) && (diff <= 1)) {return true;}return false;}public int getDepth(TreeNode root) {// 邊界條件,達到葉子節點if (root == null) {return 0;}int depth = 0;// 迭代求左子樹深度int leftNode = getDepth(root.left);// 迭代右子樹深度int rightNode = getDepth(root.right);// 該樹左右子樹中的最大值 +1 為該樹的深度depth = leftNode > rightNode ? leftNode : rightNode;return depth + 1;} }總結
以上是生活随笔為你收集整理的剑指offer(Java实现) 平衡二叉树的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浅析Java内存模型--ClassLoa
- 下一篇: 在Python这条路上踩过的坑(1)