Binary Tree Right Side View
来源:互联网 发布:角木肇 知乎 编辑:程序博客网 时间:2024/06/11 21:12
思考:只需要知道每一行的最后一个节点值即可。
方法
- 1、考虑使用两个队列进行BFS,A队列存放当前行的节点,B队列存放当前节点的子节点,即当A队列空时,最后一个访问的节点即位当前行的最后一个节点。
- 2、递归遍历。每一层都会有一个值加入列表,即可以利用DFS来遍历,并传入当前深度level(root为1),如果当前深度等于re(结果列表)的长度,即将re的第level个值更新为当前节点的值(每一行的最后一个节点会覆盖其之前的所有节点,这样re中存的就是最右边的值)。如果level大于re的长度,则添加当前节点值为re的第level个值(level只会比re长度大一,所以直接add就可以)。
代码块
利用双队列
public class Solution { public List<Integer> rightSideView(TreeNode root) { Queue<TreeNode> q1 = new LinkedList<TreeNode>(); List<Integer> re = new LinkedList<Integer>(); if(root == null) return re; q1.add(root); while(!q1.isEmpty()){ Queue<TreeNode> q2 = new LinkedList<TreeNode>(); TreeNode temp = null; while(!q1.isEmpty()){ temp = q1.poll(); if(temp.left != null) q2.add(temp.left); if(temp.right != null) q2.add(temp.right); } re.add(temp.val); q1.addAll(q2); } return re; } }
利用递归
public class Solution { public List<Integer> rightSideView(TreeNode root) { List<Integer> re = new LinkedList<Integer>(); DFSRightView(root, 1, re); return re; } void DFSRightView(TreeNode node, int level, List<Integer>re){ if(node == null) return; if(level > re.size()) re.add(node.val); else re.set(level - 1, node.val); DFSRightView(node.left, level + 1, re); DFSRightView(node.right, level + 1, re); } }
0 0
- Binary Tree Right Side View
- Binary Tree Right Side View
- Binary Tree Right Side View
- Binary Tree Right Side View
- Binary Tree Right Side View
- Binary Tree Right Side View
- Binary Tree Right Side View
- Binary Tree Right Side View
- Binary Tree Right Side View
- Binary Tree Right Side View
- Binary Tree Right Side View
- Binary Tree Right Side View
- Binary Tree Right Side View
- Binary Tree Right Side View
- Binary Tree Right Side View
- Binary Tree Right Side View
- Binary Tree Right Side View
- Binary Tree Right Side View
- ARCscene二次开发
- iOS学习之Map,定位,标记位置的使用
- 为Android App签名
- 删除留言和更新留言——在线留言板3
- 从头到尾彻底理解KMP
- Binary Tree Right Side View
- 如何在Ubuntu手机中使用前置照相机
- Linux下用于查看系统当前登录用户信息的4种方法-【linux学习笔记】
- 都说“知乎”逼格高,我们来实现“知乎”回答详情页动画效果
- 浅谈WebLogic和Tomcat
- UITextField可以快捷监听输入框输入文字
- 1 、Quartz 2D绘图基础
- 敏捷开发之Scrum扫盲篇
- Monkeyrunner 使用说明