1. 获取二叉树的右视图
给定一个二叉树根节点 root,想象自己站在它的右侧,按照自顶向下的顺序,返回从右侧所能看到的节点值。leetcode 原题
* 以下二叉树的右视图为 2,4,5
* 2
* / \
* 3 4
* /
* 5
2. 解法
借助
队列执行广度优先搜索,层序遍历二叉树,获取每一层最右侧一个节点的值记录下来,遍历结束即取得结果
public List<Integer> rightSideView(TreeNode root) {
List<Integer> res = new ArrayList<>();
if (null == root) {
return res;
}
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
while (!queue.isEmpty()) {
int size = queue.size();
for (int i = 0; i < size; i++) {
// 弹出队列头的当前层节点
TreeNode node = queue.poll();
if (i == size - 1) {
res.add(node.val);
}
// 弹出节点的下一层节点入队尾
if (null != node.left) {
queue.add(node.left);
}
if (null != node.right) {
queue.add(node.right);
}
}
}
return res;
}
版权声明:本文为weixin_45505313原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。