二叉树的深度

一个树的深度等于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));
        }
    }
}

 

转载于:https://www.cnblogs.com/heaven.kaixin/archive/2011/03/17/1986724.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值