0
点赞
收藏
分享

微信扫一扫

5.1.5二叉树层序遍历


文章目录

  • ​​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;
}


};


举报

相关推荐

0 条评论