LintCode 第97题 二叉树的最大深度 【分治算法】

题目描述:

给定一个二叉树,找出其最大深度。

二叉树的深度为根节点到最远叶子节点的距离。

样例

给出一棵如下的二叉树:

  1
 / \ 
2   3
   / \
  4   5

这个二叉树的最大深度为3.

解题思路:

使用递归的思想,递归函数返回当前节点左右子节点的深度大的那一个。

实现代码:

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;

typedef char ElemType;

typedef struct BinaryTreeNode{
    char value;
    struct BinaryTreeNode *lchild,*rchild;
}BinaryTreeNode,*BinaryTree;

BinaryTreeNode * CreatBiTree() {
    BinaryTreeNode * node;
    char data;
    cin>>data;
    if (data == '#') {
        node = NULL;
    } else {
        node = (BinaryTreeNode *)malloc(sizeof(BinaryTreeNode));//new BinaryTreeNode;
        node->value = data;
        node->lchild = CreatBiTree();
        node->rchild = CreatBiTree();
    }
    return node;
}

int returnMaxDepth(BinaryTreeNode *node){
    if (node == NULL) {
        return 0;
    }

    int leftDepth = returnMaxDepth(node->lchild);
    int rightDepth = returnMaxDepth(node->rchild);
    return leftDepth > rightDepth?leftDepth+1:rightDepth+1;
}



int main(int argc, const char * argv[]) {
    // insert code here...
    std::cout << "Hello, World!\n";
    BinaryTreeNode * rootNode = CreatBiTree();
    int maxDepth =  returnMaxDepth(rootNode);
    return 0;
}


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值