
遍历时必定要从右子节点开始,主要是要解决拿到每层最右边节点的问题。
在深度遍历时递归函数传进去层数,每往下层递归时层数+1.
用一个数组记录每层有没有被访问过,只要是该层第一次访问,由于是先访问右子节点,所以一定是每层最右边的
class Solution {
List<Integer> list;
boolean A[];
public List<Integer> rightSideView(TreeNode root) {
list = new ArrayList<>();
A = new boolean[15];
visit(root,0);
return list;
}
public void visit(TreeNode root,int level) {
if(root == null){
return;
}
if(!A[level]){
list.add(root.val);
A[level] = true;
}
if(null != root.right){
visit(root.right,level+1);
}
if(null != root.left){
visit(root.left,level+1);
}
}
}
博客介绍了获取每层最右边节点的方法。遍历时从右子节点开始,深度遍历时递归函数传入层数,每往下递归一层层数加1,并用数组记录每层是否被访问过,该层首次访问的节点即为最右节点。
3506

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



