/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
int TreeDepth(TreeNode* pRoot)
{
if(pRoot == NULL)
return NULL;
int leftd = 0;
int rightd = 0;
leftd = TreeDepth(pRoot->left);
rightd = TreeDepth(pRoot->right);
int ret = (1+ (leftd > rightd?leftd:rightd));
return ret;
}
};
非递归思路二叉树的层次遍历:
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
int TreeDepth(TreeNode* pRoot)
{
if(pRoot == NULL)
return 0;
queue<TreeNode*> queTree;
queTree.push(pRoot);
int depth = 0;
while(!queTree.empty())
{
int size = queTree.size();
depth++;
while(size != 0)
{
TreeNode* temp = queTree.front();
queTree.pop();
if(temp->left)
queTree.push(temp->left);
if(temp->right)
queTree.push(temp->right);
size--;
}
}
return depth;
}
};
class Solution {
public:
int TreeDepth(TreeNode* pRoot) {
if (!pRoot) return 0;
queue<TreeNode*> que;
que.push(pRoot);int depth=0;
while (!que.empty()) {
int size=que.size();
depth++;
for (int i=0;i<size;i++) { //一次处理一层的数据
TreeNode *node=que.front();
que.pop();
if (node->left) que.push(node->left);
if (node->right) que.push(node->right);
}
}
return depth;
}
};
类似于二叉树的层次遍历
class Solution {
public:
vector<int> PrintFromTopToBottom(TreeNode* root) {
queue<TreeNode*> q;
vector<int> res;
if(root == NULL)
{
return res;
}
q.push(root);
while(!q.empty())
{
res.push_back(q.front()->val);
if(q.front()->left!=NULL)
q.push(q.front()->left);
if(q.front()->right!=NULL)
q.push(q.front()->right);
q.pop();
}
return res;
}
};