美文网首页
平衡二叉树

平衡二叉树

作者: Hammy | 来源:发表于2018-02-01 15:51 被阅读0次

    题目:
    输入一棵二叉树,判断该二叉树是否是平衡二叉树。

    思路:
    平衡二叉树的特点是左子树与右子树的高度相差不大于1,所以根据后序遍历先遍历左右子树的特别,结合二叉树的求深度的方法进行判断.

    代码

    /**
     * Created by Hammy on 2018/2/1.
     * 输入一棵二叉树,判断该二叉树是否是平衡二叉树.
     * 平衡二叉树的要求是左子树和右子树的高度差不相差1
     * 使用后续遍历,因为后续遍历在遍历的过程中左右子树深度已经遍历成功
     */
    public class IsBalanced_Solution
    {
        private boolean flag = true;
        public boolean isBalanced_Solution(TreeNode root){
           TreeDepth(root);
            return flag;
        }
        private int TreeDepth(TreeNode node){
            if(node == null)
                return 0;
    
            int left = TreeDepth(node.left);
            int right = TreeDepth(node.right);
            if(Math.abs(left - right) > 1){
                flag = false;
            }
            return (left > right)?left+1:right+1;
        }
    
    }
    
    
    

    相关文章

      网友评论

          本文标题:平衡二叉树

          本文链接:https://www.haomeiwen.com/subject/vtidzxtx.html