[关闭]
@snuffles 2019-04-02T13:05:31.000000Z 字数 733 阅读 932

L199 二叉树右视图


给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

ponyai考试题

层序遍历的变形题,辅助数据结构用到队列,队列里保存TeeNode*,判断打印到本层最后一个的条件:遍历每层节点的时候把下一层节点压入到队列中,本层全部pop出后,下一层的最后一个节点压入栈中。

  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. //intialize queue
  14. queue<TreeNode*> q; //
  15. vector<int> res;
  16. if(root == NULL) return res;
  17. q.push(root);
  18. //遍历每层节点的时候把下一层节点压入到队列中
  19. while(!q.empty()){
  20. res.push_back(q.back()->val);
  21. int size = q.size();
  22. for(int i=0;i<size;i++){
  23. TreeNode *node = q.front();
  24. q.pop();
  25. if(node->left) q.push(node->left);
  26. if(node->right) q.push(node->right);
  27. }
  28. }
  29. return res;
  30. }
  31. };
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注