@snuffles
2019-04-02T05:05:31.000000Z
字数 733
阅读 1192
树
给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
ponyai考试题
层序遍历的变形题,辅助数据结构用到队列,队列里保存TeeNode*,判断打印到本层最后一个的条件:遍历每层节点的时候把下一层节点压入到队列中,本层全部pop出后,下一层的最后一个节点压入栈中。
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/class Solution {public:vector<int> rightSideView(TreeNode* root) {//intialize queuequeue<TreeNode*> q; //vector<int> res;if(root == NULL) return res;q.push(root);//遍历每层节点的时候把下一层节点压入到队列中while(!q.empty()){res.push_back(q.back()->val);int size = q.size();for(int i=0;i<size;i++){TreeNode *node = q.front();q.pop();if(node->left) q.push(node->left);if(node->right) q.push(node->right);}}return res;}};
