题目
给定一个二叉树的根节点root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧 所能看到的节点值
示例
思路
将当前层的最后一个节点放入集合中(从右侧看到的节点值就是每一层的最后一个节点值)
代码实现
/**
* 给定一个二叉树的根节点root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧 所能看到的节点值
* 思路:
* 将当前层的最后一个节点放入集合中(从右侧看到的节点值就是每一层的最后一个节点值)
* @param root 根节点
* @return 从右侧能看见的节点值
*/
public List<Integer> rightSideView(TreeNode root){
List<Integer> res = new ArrayList<>();
if (root == null){
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 t = queue.poll();
if (t.left != null){
queue.add(t.left);
}
if (t.right != null){
queue.add(t.right);
}
if (i == size -1){
res.add(t.val);
}
}
}
return res;
}
代码测试
public static void main(String[] args) {
TraverseTreeExam exam = new TraverseTreeExam();
TreeNode treeNode = new TreeNode();
int [] arrs = {1,2,3,4,0,5,6};
TreeNode root1 = treeNode.intArrayToBTree(arrs);
int value = exam.findBottomLeftValue(root1);
System.out.println("value = " + value);
}
测试结果:
value = 4