LeetCode#199. Binary Tree Right Side View
来源:互联网 发布:深圳火妹网络 编辑:程序博客网 时间:2024/06/17 23:38
- 题目:站在一棵二叉树的右边,返回能看到的节点的值(一个list)
- 难度:Medium
- 思路:根据题目意思可以理解为返回二叉树每一层的最右边的节点的值,所以可以用一个队列来存储每一层的节点,遍历队列里的节点,取当前队列里的最后一个节点值(用一个size来记录上一层节点总数)
- 代码:
public class Solution { public List<Integer> rightSideView(TreeNode root) { List<Integer> result = new ArrayList<>(); if(root == null){ return result; } LinkedList<TreeNode> queue = new LinkedList<>(); queue.offer(root); while(queue.size() > 0){ int size = queue.size(); for(int i = 0; i < size-1; i++){ TreeNode node = queue.poll(); if(node.left != null){ queue.offer(node.left); } if(node.right != null){ queue.offer(node.right); } } TreeNode nodeAdd = queue.poll(); result.add(nodeAdd.val); if(nodeAdd.left != null){ queue.offer(nodeAdd.left); } if(nodeAdd.right != null){ queue.offer(nodeAdd.right); } } return result; }}
方法二:递归进行层次遍历,每次遍历的时候先访问右子树,同时通过一个trick(拿结果列表的大小和当前访问的数的层数进行比较)
这种递归的方式居然效率比用队列快(76% VS 27%)
public class Solution { public List<Integer> rightSideView(TreeNode root) { List<Integer> result = new ArrayList<Integer>(); rightView(root, result, 0); return result; } public void rightView(TreeNode curr, List<Integer> result, int currDepth){ if(curr == null){ return; } if(currDepth == result.size()){ result.add(curr.val); } rightView(curr.right, result, currDepth + 1); rightView(curr.left, result, currDepth + 1); }}
阅读全文
0 0
- [LeetCode]199.Binary Tree Right Side View
- LeetCode 199. Binary Tree Right Side View
- [leetcode] 199.Binary Tree Right Side View
- [leetcode] 199. Binary Tree Right Side View
- [LeetCode]199. Binary Tree Right Side View
- 199. Binary Tree Right Side View LeetCode
- leetcode 199. Binary Tree Right Side View
- [LeetCode]199. Binary Tree Right Side View
- [LeetCode]199. Binary Tree Right Side View
- [LeetCode] 199. Binary Tree Right Side View
- LeetCode *** 199. Binary Tree Right Side View
- LeetCode 199. Binary Tree Right Side View
- leetcode.199. Binary Tree Right Side View
- LeetCode-199.Binary Tree Right Side View
- LeetCode - 199. Binary Tree Right Side View
- [leetcode] 199. Binary Tree Right Side View
- 【leetcode】199. Binary Tree Right Side View
- [LeetCode] 199. Binary Tree Right Side View
- AJAX XML 实例
- shell脚本实现shell排序
- Java 递归算法打印输出9*9乘法表
- java给定一串字符串,统计其中的各个字符的出现的次数
- 学生信息管理知识总结
- LeetCode#199. Binary Tree Right Side View
- 17暑假多校联赛2.8 HDU 6052 To my boyfriend
- 2017.07.31
- 杭电oj1092简单的加法
- mysql5.7.17安装教程(linux系统)
- Github readme.md 添加图片
- 为何程序员喜欢将INF设置为0x3f3f3f3f?
- spring 常用类
- Notes On Latex: lshort chapter 1