LeetCode 199. Binary Tree Right Side View
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 199. Binary Tree Right Side View相关的知识,希望对你有一定的参考价值。
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */ 10 class Solution { 11 public: 12 vector<int> rightSideView(TreeNode* root) { 13 vector<int> res; 14 if(!root) return res; 15 16 queue<TreeNode*> q1, q2; 17 q1.push(root); 18 while(!q1.empty()){ 19 res.push_back(q1.back()->val); 20 while(!q1.empty()){ 21 TreeNode* cur = q1.front(); 22 q1.pop(); 23 if(cur->left) q2.push(cur->left); 24 if(cur->right) q2.push(cur->right); 25 } 26 q1.swap(q2); 27 } 28 return res; 29 } 30 };
思路:类似于103zigzag那道题,q1存当前层的所有节点,q2存下一层所有节点(按从左往右的顺序),每次取q1.front()即当前层的最右节点。最后q1、q2进行swap。
在得到q2那一步的代码尤其丑,貌似有更优解,留坑。
以上是关于LeetCode 199. Binary Tree Right Side View的主要内容,如果未能解决你的问题,请参考以下文章
leetcode@ [199] Binary Tree Right Side View (DFS/BFS)
LeetCode 199. Binary Tree Right Side View
[leetcode] 199. Binary Tree Right Side View
[LeetCode] 199. Binary Tree Right Side View Java