力扣(LeetCode)104. 二叉树的最大深度
思路:
递归一下,如果理解有困难,建议自己动手画一下二叉树,三四个结点即可,方便理解
注释掉的代码产生的结果可能是正确的,但是超时了
#include<iostream>
#include<cstdlib>
using namespace std;
typedef struct TreeNode
{
int val;
TreeNode *left;
TreeNode *right;
} TreeNode,*SearchTree,*Position;
void PreOrderTraversal(SearchTree T)
{
if(T==NULL)
return;
cout<<T->val<<" ";
PreOrderTraversal(T->left);
PreOrderTraversal(T->right);
}
SearchTree Insert(int val,SearchTree T)
{
if(T==NULL)
{
T = (SearchTree)malloc(sizeof(TreeNode));
if(T==NULL)
{
cout<<"MALLOC ERROR\n"<<endl;
exit(1);
}
T->val = val;
T->left = T->right = NULL;
}
else
{
if(val>T->val)
T->right = Insert(val,T->right);
else if(val<T->val)
T->left = Insert(val,T->left);
}
return T;
}
class Solution
{
public:
int maxDepth(TreeNode* root)
{
if(root == NULL)
return 0;
int Ldepth=1,Rdepth=1;
if(root->left)
Ldepth = maxDepth(root->left)+1;
if(root->right)
Rdepth = maxDepth(root->right)+1;
return Ldepth>Rdepth ? Ldepth : Rdepth;
}
};
//class Solution
//{
//public:
// int maxDepth(TreeNode* root)
// {
// if(root == NULL)
// return 0;
//
// return maxDepth(root->left) > maxDepth(root->right) ?
// maxDepth(root->left)+1 : maxDepth(root->right)+1;
// }
//};
int main()
{
Solution s;
SearchTree T1 = NULL;
SearchTree T2 = NULL;
T1 = Insert(3,T1);
T1 = Insert(9,T1);
T1 = Insert(20,T1);
T1 = Insert(15,T1);
T1 = Insert(7,T1);
// T1 = Insert(6,T1);
// T1 = Insert(9,T1);
PreOrderTraversal(T1);
cout<<endl;
int depth;
depth = s.maxDepth(T1);
cout<<depth<<endl;
return 0;
}