二叉树的最大高度和最小高度上次去欢聚时代参加2013校招笔试,就有一道题是考这个,当时没明白,二叉树还有最大和最小高度?

1个回答

  • 你看到的应该是下面的三个函数,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;

    }