leetcode-初级-二叉树的最大深度

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

二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

说明: 叶子节点是指没有子节点的节点。

示例:
给定二叉树 [3,9,20,null,null,15,7]

    3
   / \
  9  20
    /  \
   15   7

返回它的最大深度 3 。

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
int maxDepth(struct TreeNode* root) {
    int hl,hr,maxh;
    if(root){
        hl=maxDepth(root->left);
        hr=maxDepth(root->right);
        maxh=hl>hr?hl:hr;
        return (maxh+1);//返回树的深度
    }
    else 
        return 0;//空树深度
}

完整呈现:

#include <stdio.h>
#include <stdlib.h>
#include<string.h>
typedef  struct  TreeNode *BinTree;
//typedef  BinTree Position;
struct  TreeNode{
	int  data;
	BinTree  left;
	BinTree  right;
};
BinTree createTreeNode(int data);
int PostOrderGetHeight( BinTree BT );

int main()
{
    BinTree  bt1,bt2,bt3,bt4,bt5,bt6;
    bt1=createTreeNode(1);
    bt2=createTreeNode(2);
    bt3=createTreeNode(3);
    bt4=createTreeNode(4);
    bt5=createTreeNode(5);
    bt6=createTreeNode(6);
    bt1->left=bt2;
    bt1->right=bt3;
    bt2->left=bt4;
    bt2->right=bt5;
    //bt3->left=NULL;
    bt3->right=bt6;
    int  len;
    len=PostOrderGetHeight(bt1);
    printf("树的深度:%d\n",len);
    return 0;
}


BinTree createTreeNode(int data)
{
	BinTree n=(BinTree)malloc(sizeof(struct  TreeNode));
	n->data = data;
	n->left = NULL;
	n->right = NULL;
	return n;

}
int PostOrderGetHeight( BinTree BT )
{   int HL, HR, MaxH;
    if( BT ) {
        HL = PostOrderGetHeight(BT->left);  /*求左子树的深度*/
        HR = PostOrderGetHeight(BT->right); /*求右子树的深度*/
        MaxH = HL > HR? HL : HR; /*取左右子树较大的深度*/
        return ( MaxH + 1 ); /*返回树的深度*/
    }
    else  return 0; /* 空树深度为0 */
}

猜你喜欢

转载自blog.csdn.net/mouthful/article/details/81088187