今天我们分享的题目是199题,题目描述如下:
那么本道题的解题思路呢就是使用层序遍历,每次将每层中的最后一个元素加入到我们的集合中。
本道题目和之前的层序遍历二叉树的题目很像,但是需要注意的细节。那么我会在代码中指出。
代码如下:
class Solution {
List<Integer> res = new ArrayList();
public List<Integer> rightSideView(TreeNode root) {
calc(root);
return res;
}
public void calc(TreeNode root){
if(root==null) return;
Queue<TreeNode> queque = new LinkedList();
queque.add(root);
while(!queque.isEmpty()){
int size = queque.size();
//这里使用for循环来取我们想要的位置
for(int i = 0;i<size;i++){
TreeNode node = queque.poll();
if(node.left!=null)queque.add(node.left);
if(node.right!=null)queque.add(node.right);
if(i==size-1) res.add(node.val);
}
}
}
}
如果不是太懂层序遍历的逻辑的话,建议先看下二叉树的层序遍历。附上我的链接:http://t.csdnimg.cn/p6f0u
那么今天的文章就分享到这里结束了。希望可以帮助到你