二叉树的深度

一个树的深度等于max(左子树深度,右子树深度)+1。可以使用递归实现。

 
c 语言版:
假设节点为定义为
struct Node {
Node* left;
Node* right;
};

int GetDepth(Node* root) {
if (NULL == root) {
    return 0;
}
int left_depth = GetDepth(root->left);
int right_depth = GetDepth(root->right);
return left_depth > right_depth ? left_depth + 1 : right_depth + 1;
}

 

c#版本:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 二叉树深度
{
    class Program
    {
        class Node
        {
            string data;
            public Node LeftNode { get; set; }
            public Node RightNode { get; set; }

            public Node(string data)
            {
                this.data = data;
            }
        }

        static int GetDepth(Node root)
        {
            if (root == null)
                return 0;

            int leftDepth = GetDepth(root.LeftNode);
            int rightDepth = GetDepth(root.RightNode);

            return leftDepth > rightDepth ? leftDepth + 1 : rightDepth + 1;
        }

        static void Main(string[] args)
        {
            Node node0 = new Node("0");
            Node node1 = new Node("1");
            Node node2 = new Node("2");
            Node node3 = new Node("3");
            Node node4 = new Node("4");
            Node node5 = new Node("5");
            Node node6 = new Node("6");
            Node node7 = new Node("7");
            Node node8 = new Node("8");

            node0.LeftNode = node1;
            node0.RightNode = node2;

            node1.LeftNode = node3;
            node1.RightNode = node4;

            node2.LeftNode = node5;
            node2.RightNode = node6;

            node4.RightNode = node7;
            node7.RightNode = node8;

            Console.WriteLine(GetDepth(node0));
        }
    }
}

 

posted @ 2011-03-17 10:12  王海龙(Heaven)  阅读(373)  评论(0编辑  收藏  举报