1. 程式人生 > >LeetCode.0199二叉樹的右檢視

LeetCode.0199二叉樹的右檢視

0199.二叉樹的右檢視

描述

給定一棵二叉樹,想象自己站在它的右側,按照從頂部到底部的順序,返回從右側所能看到的節點值。

例項

輸入: [1,2,3,null,5,null,4]
輸出: [1, 3, 4]
解釋:

   1            <---
 /   \
2     3         <---
 \     \
  5     4       <---

題解

逐層遍歷,輸出每次List的最後一個元素.

public ArrayList<TreeNode> getNextLayNodes(ArrayList<
TreeNode>
layList1){ ArrayList<TreeNode> layList2 = new ArrayList<>(); for(TreeNode node:layList1){ if (node.left != null) layList2.add(node.left); if (node.right != null) layList2.add(node.right); } return
layList2; } public List<Integer> rightSideView(TreeNode root) { List<Integer> result = new ArrayList<>(); if (root == null) return result; ArrayList<TreeNode> layList1; ArrayList<TreeNode> layList2; layList1 =
new ArrayList<>(); layList1.add(root); while (!layList1.isEmpty()){ layList2 = getNextLayNodes(layList1); result.add(layList1.get(layList1.size()-1).val); layList1 = layList2; } return result; }