Given a binary tree, find its maximum depth. //二叉树的最大深度
The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.
C++: 用递归方法实现
#include <iostream>
#include <stdlib.h>
using namespace std;
/**
* Definition for binary tree
*/
typedef struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
//TreeNode(int x) : val(x), left(NULL), right(NULL) {}
}TreeNode,*BiTree ;
char *ch; //用于输入的字符指针
void CreateTree(BiTree &T) {
//前序法创建二叉树
if(*ch++=='#')
T = NULL;
else {
T = (TreeNode*)malloc(sizeof(TreeNode));
if(!T) exit(1);
T->val = *(ch-1);
CreateTree(T->left);
CreateTree(T->right);
}
}
//递归遍历方法
int maxDepth(TreeNode *root) {
if(root == NULL)
return 0;
int leftDepth = maxDepth(root->left);
int rightDepth = maxDepth(root->right);
return leftDepth>rightDepth ? leftDepth+1:rightDepth+1;
}
int main() {
BiTree T;
char case1[] = {"ABC##DE#G##F###"};
ch = case1;
CreateTree(T);
cout << maxDepth(T) << endl;
return 0;
}