二叉树的最大高度和最小高度

论坛 期权论坛 期权     
小熙魔少   2018-4-28 02:17   5142   2
上次去欢聚时代参加2013校招笔试,就有一道题是考这个,当时没明白,二叉树还有最大和最小高度?题目给了3个函数,一个maxheight(名字记不清了),另一个minheight,还有一个函数 Isbalance,判断这个树是否为平衡二叉树.。问一下各位大神。。。怎么理解的。
分享到 :
0 人收藏

2 个回复

倒序浏览
2#
songyipangbuo  4级常客 | 2018-4-30 01:12:56
你看到的应该是下面的三个函数,maxheight函数就是求二叉树的左子树与右子树中那个深度最大最大深度多少,minheight函数就是求二叉树的左子树与右子树中那个深度最小最小深度多少,Isbalance函数就是求左子树与右子树的深度差,只要不大于1就是平衡二叉树。
平衡二叉树:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
        static void Main(string[] args)
        {
            Node root = new Node();
            Node c1 = new Node();
            Node c2 = new Node();
            root.left = c1;
            root.right = c2;
            Node c11 = new Node();
            c1.left = c11;
            Node c112 = new Node();
            c11.right = c112;
            Program p = new Program();
            Console.WriteLine(p.isBalanced(root));
            Console.Read();
        }
        public int GetMaxHeight(Node root)
        {
            if (root == null)
                return 0;
            int max = 1 + Math.Max(this.GetMaxHeight(root.left), this.GetMaxHeight(root.right));
            return max;
        }
        public int GetMinHeight(Node root)
        {
            if (root == null)
                return 0;
            int min = 1 + Math.Min(this.GetMinHeight(root.left), this.GetMinHeight(root.right));
            return min;
        }
        public bool isBalanced(Node root)
        {
            int max = this.GetMaxHeight(root);
            int min = this.GetMinHeight(root);
            if (max - min > 1)
                return false;
            else
                return true;
        }
    }
    public class Node
    {
        public int value;
        public Node left;
        public Node right;
    }
3#
8shangren8  1级新秀 | 2018-4-30 01:12:57
zrw
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP