标签:
题目大意:
很简单,只需要找出一颗二叉树的最大深度即可,貌似没有时间和空间的要求。
求解方法:
更简单,只需要按照宽度优先的方法去查找即可,在这里我用a队列保存待扩展的节点,用b来保存a扩展出来的节点,再利用t中间变量来交换a和b,直到a列队为空时,结束。
注意边界条件,root=NULL时,应该返回0.
#include <iostream>
#include <queue>
using namespace std;
//Definition for a binary tree node.
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
class Solution {
public:
int maxDepth(TreeNode* root)
{
int deep=0;
queue<TreeNode*> a;
queue<TreeNode*> b;
queue<TreeNode*> t;
if (root!=NULL)
deep=deep+1;
else
return deep;
a.push(root);
while(!a.empty())
{
//当两个队列至少一个不为空时,
//罗列a中的所有的子节点
//将a的子节点放在b中,
//交换a与b
while(!a.empty())
{
TreeNode* node=a.front();
if(node->left!=NULL)
b.push(node->left);
if(node->right!=NULL)
b.push(node->right);
a.pop();
}
t=a;
a=b;
b=t;
if(!a.empty())
deep=deep+1;
}
return deep;
}
};
int main()
{
cout << "只要将头文件和solution类拷贝进去即可。!" << endl;
//测试用例,比较麻烦,不写,上述代码去掉结构体定义可以AC
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
LeetCode练习-求二叉树的深度-Maximu Depth of Binary Tree
标签:
原文地址:http://blog.csdn.net/chenriwei2/article/details/46744655