从右边看二叉树
2016-12-27 00:00
274 查看
原题
Given a binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can see ordered from top to bottom.For example:
Given the following binary tree,
1 <--- / \ 2 3 <--- \ \ 5 4 <---
You should return [1, 3, 4].
题目大意
给定一个二叉树,想象自己站在树的右边,返回从下到下你能看到的节点的值。解题思路
二叉树的层次遍历,每层按照从左向右的顺序依次访问节点,(每一层取最右边的结点)代码实现
树结点类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> result = new LinkedList<>(); if (root != null) { Deque<TreeNode> deque = new LinkedList<>(); // 当前层的结点数 int current = 1; // 下一层的结点数 int next = 0; TreeNode node; deque.addLast(root); while (deque.size() > 0) { // 取第一个结点 node = deque.removeFirst(); current--; // 添加非空的左结点 if (node.left != null) { next++; deque.addLast(node.left); } // 添加非空的右结点 if (node.right != null) { next++; deque.addLast(node.right); } // 如果当前层已经处理完了 if (current == 0) { // 保存此层的最右一个结点值 result.add(node.val); // 设置下一层的元素个数 current = next; next = 0; } } } return result; } }
相关文章推荐
- 岛的数目
- 范围数位与结果
- 开心数字
- 删除单链表中的元素
- jpa与hibernate
- 前端插件html2canvas的截图功能
- Python远程获取MD5校验码并在web上显示
- java 多线程,及获取线程执行结果
- 关于调用shell脚本的一点心得
- rabbitmq安装遇到的坑
- 物流类App开发影响报价因素|明智科技
- java日期格式大小写汇总
- 安装Rabbit MQ
- 如何合理估算线程池大小?
- Linux系统基础结构
- Linux不常用命令...^_~
- CSS3.0新增属性
- gittle使用小集
- SpringBoot之CommandLineRunner接口和ApplicationRunner接口区别
- CURL实现HTTP的GET POST方法,以及上传文件