Given A binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can SE E ordered from top to bottom.
For example:
Given The following binary tree,
1 <---/ 2 3 <---\ 5 4 <---
You should return [1, 3, 4]
.
Portal: https://leetcode.com/problems/binary-tree-right-side-view/
Using the priority queue traversal method, each time you traverse to the last node of a layer and keep it.
/*** Definition for a binary tree node. * public class TreeNode {* int val; * TreeNode left; * TreeNode RI Ght * TreeNode (int x) {val = x;} }*/ Public classSolution { PublicList<integer>Rightsideview (TreeNode root) {List<Integer> list =NewLinkedlist<integer>(); if(Root = =NULL) returnlist; //save nodes for each layer to remove the last nodequeue<treenode> CurrentLevel =NewLinkedlist<treenode>(); Currentlevel.add (root); while(!Currentlevel.isempty ()) { intSize =currentlevel.size (); //Lastval is used to save the last node value for each layer for(inti = 0; i < size-1; i++) {TreeNode CurrentNode=Currentlevel.poll (); if(Currentnode.left! =NULL) Currentlevel.add (currentnode.left); if(Currentnode.right! =NULL) Currentlevel.add (currentnode.right); } TreeNode lastnode=Currentlevel.poll (); //add the last node to the queueList.add (Lastnode.val); if(Lastnode.left! =NULL) Currentlevel.add (lastnode.left); if(Lastnode.right! =NULL) Currentlevel.add (lastnode.right); } returnlist; }}
Leetcode-199 (Java) Binary Tree right Side View