判断二叉树是不是平衡二叉树

来源:互联网 发布:java comp env jdbc 编辑:程序博客网 时间:2024/05/24 11:14

1.问题描述

输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。(来自《剑指offer》)


2.分析

我们可以采用后续遍历,在遍历根结点之前就可以得到左右子树的深度及是不是一颗平衡二叉树。然后在根据左右子树的深度差值来判断这棵树是不是一棵平衡二叉树。


3.代码

int IsBalanced(TreeNode* head,int* depth){    if (head == NULL)    {        *depth = 0;                return 1;    }        int left;        int right;        if (IsBalanced(head->lChild,&left) && IsBalanced(head->rChild,&right))    {        int diff = left - right;                if (diff <= 1 || diff >= -1)        {                        *depth = left > right ? left + 1 : right + 1;                        return  1;        }            }        return  0;        }


0 0
原创粉丝点击