/**********************************************************************************************************
Given a binary tree, return the boom-up level order traversal of its nodes’ values. (ie, from le to
right, level by level from leaf to root).
For example: Given binary tree {3,9,20,#,#,15,7},
3
/ \
9 20
/ \
15 7
return its boom-up level order traversal as:
[
[15,7]
[9,20],
[3],
]
**********************************************************************************************************/
Class Solution{
public:
vector<vector<int> > levelOrder(TreeNode * root){
vector<vector<int>> result;
if(root == nullptr){
return result;
}
queue<TreeNode*> current, next;
vector<int> level;
current.push(root);
while(!current.empty()){
while(!current.empty()){
TreeNode * node = current.front();
current.pop();
level.push_back(node);
if(node->left != nullptr) next.push(node->left);
if(node->right != nullptr) next.push(node->right);
}
result.push_back(level->val);
level.clear();
swap(next,current);
}
reverse(result.begin(),result.end());
return result;
}
};

参考资料:
LeetCode 题解
本文介绍了一种从叶节点到根节点的层次遍历二叉树的方法,并提供了一个具体的C++实现示例。该算法使用两个队列来辅助遍历过程,先将根节点入队,然后依次处理每个节点,将它们的子节点入队,直至队列为空。最后,将结果反转,得到从底部向上、从左到右的层次遍历结果。
2595

被折叠的 条评论
为什么被折叠?



