【Leetcode】从右边看二叉树
来源:互联网 发布:电子书语音阅读软件 编辑:程序博客网 时间:2024/05/21 20:56
原题出自LeetCode:
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]。
题目大意:给定一棵二叉树,想象自己站在树的右边,返回从上到下你能看到的节点的值。
解题思路:
二叉树的层次遍历,每层按照从左向右的顺序依次访问节点(每一层取最右边的节点)。
代码实现:
import java.util.Deque;import java.util.LinkedList;import java.util.List;//树节点类class TreeElement {int val;TreeElement left;TreeElement right;TreeElement(int x) {val = x;}}public class RightSideView {public List<Integer> rightSideView(TreeElement root) {List<Integer> result = new LinkedList<>();if(root != null) {Deque<TreeElement> deque = new LinkedList<>();//当前层的节点数int current = 1;//下一层的节点数int next = 0;TreeElement 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;}}
阅读全文
0 0
- 【Leetcode】从右边看二叉树
- 【LeetCode-面试算法经典-Java实现】【199-Binary Tree Right Side View(从右边看二叉树)】
- 199. Binary Tree Right Side View | 从右边看二叉树得到的集合
- [LeetCode] 从排序的单链表到平衡搜索二叉树
- 找完全二叉树最底层最右边的结点
- 找完全二叉树最底层最右边的结点
- 从剑指offer -- 二叉搜索树的后序遍历序列 -- 看二叉搜索树的遍历
- 从二叉树和iterator看代码结构设计 (关于adapter的运用)
- 从二叉排序树种看递归参数的传递
- leetcode:构建二叉树
- 重建二叉树 leetcode
- LeetCode -- Flatten 二叉树
- leetcode-构造二叉树
- leetcode二叉树遍历
- leetcode 重建二叉树
- 二叉树题目-leetcode
- LeetCode:反转二叉树
- [leetcode]二叉树遍历
- 蓝桥杯 ADV-226 算法提高 9-3摩尔斯电码
- 可重入函数和线程安全
- JDBC
- 蓝桥杯 ADV-224 算法提高 9-1九宫格
- 隐藏域遇到的问题
- 【Leetcode】从右边看二叉树
- 创建类似于微信或QQ聊天视图的Android库:ChatMessageView
- 蓝桥杯 ADV-223 算法提高 8-1因式分解
- socket编程——TCP
- 考完试
- 蓝桥杯 ADV-208 算法提高 矩阵相乘
- XML
- C++ 复制构造函数不能用 explicit 修饰
- Volatile