文章目录
- 1.题目
- 2.代码
1.题目
- 题目要求
For example:
Given binary tree {3,9,20,#,#,15,7},
3
/ \
9 20
/ \
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]
- 思路:
迭代法:使用队列,更好理解
递归法
2.代码
迭代法
class Solution
{
public:
vector<vector<int>> levelOrder(TreeNode* root)
{
vector<vector<int>> result;
//层序遍历多了个level
int level=0;
transfunction(result,level,root);
return result;
}
void transfunction(vector<vector<int>>& tmpvec, int tmpllevel, TreeNode* node)
{
if (!node) return;
if (tmpvec.size() == tmpllevel) return tmpllevel.push_back(vector<int>);
tmpvec[tmpllevel].push_back(node->val);
if (node->left) transfunction(tmpvec,tmpllevel+1,node->left);
if (node->right) transfunction(tmpvec,tmpllevel+1,node->right);
}
};
递归版
class Solution{
public:
vector<vector<int>> levelOrder(TreeNode* root){
vector<vector<int>> result;
deque<TreeNode* > deq;
deq.push(root);
while (!dep.empty())
{
vector<int> subresult;
for (int i=deq.size();i>0;--i)
{
TreeNode* deqnode=deq.front();
deq.pop();
subresult.push_back(deqnode);
if (deqnode->left) dep.push(deqnode->left);
if (deqnode->right) dep.push(deqnode->right);
}
result.push_back(subresult);
}
return result;
}
};