原题链接在这里:https://leetcode.com/problems/binary-tree-right-side-view/
与Binary Tree Level Order Traversal相似,通过BFS一层一层扫树,这里是仅添加最右面的一个点,就是curCount = 1 的时候。
Note: 当curCount == 0 时,curCount = nextCount, 不要忘记把nextCount归0.
AC Java:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public List<Integer> rightSideView(TreeNode root) {
List<Integer> ls = new ArrayList<Integer>();
if(root == null){
return ls;
}
Queue<TreeNode> que = new LinkedList<TreeNode>();
int curCount = 1;
int nextCount = 0;
que.offer(root);
while(!que.isEmpty()){
TreeNode tn = que.poll();
if(curCount == 1){
ls.add(tn.val);
}
curCount--;
if(tn.left != null){
que.offer(tn.left);
nextCount++;
}
if(tn.right != null){
que.offer(tn.right);
nextCount++;
}
if(curCount == 0){
curCount = nextCount;
nextCount = 0; //error
}
}
return ls;
}
}