首页 > 其他 > 详细

面试题五十五:二叉树的深度

时间:2020-03-29 18:42:24      阅读:37      评论:0      收藏:0      [点我收藏+]
 

从根节点到叶子点的最长路径上的结点数为深度
方法:根据树的特性,比较左右子树,选那个长的加1;大问题小化递归计算

int TreeDepth(BinaryTreeNode pNode){
            //边界,叶子的下一个返回0
            if(pNode==null )
                return 0;
            int L= TreeDepth( pNode.L )+1;
            int R=TreeDepth( pNode.R)+1;
            return  (L>R)?L:R;
    }

题目二:判断是否是平衡二叉树 左右子树深度差不超过一
方法一:判断左右子树的深度后做差,进行判断.重复计算过多。性能不佳

   bool Isbalanced (BinaryTreeNode pNode){
                if(pNode==null)
                    return true;
                int L= TreeDepth( pNode.L );
                int R=TreeDepth( pNode.R);

                if(L-R>1||L-R<-1)
                    return false;     
                return Isbalanced(pNode.L) && Isbalanced(pNode.R);
        }

方法二:用后序遍历的方式遍历每一个节点,在遍历每一个节点的时候记录它的深度,一边遍历一边判断,需要给函数一个表示深度的变量

面试题五十五:二叉树的深度

原文:https://www.cnblogs.com/niliuxiaocheng/p/12593345.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!