【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;}}






原创粉丝点击