好久不写了,最近忙毕业论文呢。
这个题,就是说一个二叉树,你从右边看,你能看到的数有哪些(会被遮挡)
其实抽象出来就是说。。。二叉树每层最右边的数有哪些。。
那我们按层遍历一次就好了。
/** * Definition for binary tree * 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) { vector<int> ans; if (root == nullptr) return ans; queue<TreeNode*> que; que.push(root); TreeNode* curr; while(!que.empty()) { int cnt = que.size(); for (int i = 0; i < cnt; i++) { curr = que.front(); que.pop(); if (curr->left) { que.push(curr->left); } if (curr->right) { que.push(curr->right); } } ans.push_back(curr->val); } return ans; } };