您的位置:首页 > 其它

Maximum Depth of Binary Tree(leetcode)

2014-11-06 15:15 211 查看
题目:

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.
题目来源:https://oj.leetcode.com/problems/maximum-depth-of-binary-tree/

解题思路:1、广搜2、深搜,找出最大值

广搜代码:

#include<iostream>
#include<queue>
using namespace std;

struct TreeNode
{
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};

int maxDepth(TreeNode *root)
{
int result=0;
if(root==NULL)
return result;
queue<TreeNode *> q;
q.push(root);
int k=0,level=1;
while(!q.empty())
{
k=level;
level=0;
for(int i=0;i<k;i++)
{
if(q.front()->left!=NULL)
{
q.push(q.front()->left);
level++;
}
if(q.front()->right!=NULL)
{
q.push(q.front()->right);
level++;
}
q.pop();
}
result++;
}
return result;
}

int main()
{
TreeNode* root=new TreeNode(1);
root->left=new TreeNode(2);
root->right=new TreeNode(3);
root->left->left=new TreeNode(4);
root->right->left=new TreeNode(5);
int results=maxDepth(root);

system("pause");
return 0;
}

深搜代码:

#include<iostream>
#include<stack>
using namespace std;

struct TreeNode
{
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};

void dfs(TreeNode *root,int result,int &max)
{
if(root==NULL)
{
if(result>max)
max=result;
return ;
}
++result;
dfs(root->left,result,max);
dfs(root->right,result,max);
}

int maxDepth(TreeNode *root)
{
int max=0;
if(root==NULL)
return max;
int result=0;
dfs(root,result,max);
return max;
}

int main()
{
TreeNode* root=new TreeNode(1);
root->left=new TreeNode(2);
root->right=new TreeNode(3);
root->left->left=new TreeNode(4);
root->right->left=new TreeNode(5);
int results=maxDepth(root);

system("pause");
return 0;
}
利用栈进行迭代的算法以后再写。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: