Description:
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]
.
Code:
1vector<int> Rightsideview (TreeNode *root) {2Deque<treenode*>A;3Deque<treenode*>b;4vector<int>result;5 6 if(root==NULL)7 returnresult;8 9 A.push_back (root);Ten while(!a.empty () | | |b.empty ()) One { A if( !a.empty ()) - { - //go to the team first element theResult.push_back (A.front ()val); - //keep children of all elements of a in B and empty a - while(!a.empty ()) - { +treenode* p =A.front (); - if(p->Right ) +B.push_back (p->Right ); A if(p->Left ) atB.push_back (p->Left ); - A.pop_front (); - } - } - Else - { inResult.push_back (B.front ()val); - //keep children of all elements of a in B and empty a to while(!b.empty ()) + { -treenode* p =B.front (); the if(p->Right ) *A.push_back (p->Right ); $ if(p->Left )Panax NotoginsengA.push_back (p->Left ); - B.pop_front (); the } + } A } the returnresult; +}
View Code
Binary Tree Right Side View