199.leetcode Binary Tree Right Side View(medium)[层次遍历二叉树 队列]

来源:互联网 发布:管家婆sql下载 编辑:程序博客网 时间:2024/06/04 22:47

Given a binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can see ordered from top to bottom.

For example:
Given the following binary tree,

   1            <--- /   \2     3         <--- \     \  5     4       <---

You should return [1, 3, 4].

用两个队列层次遍历二叉树每层的数值,并且将每层最右边的数放入最后的结果中。

vector<int> rightSideView(TreeNode* root) {       //其实是层次遍历树并且获得每层最右边的数的过程       vector<int> result;       if(root == NULL) return result;       queue<TreeNode*> queue1;       queue<TreeNode*> queue2;       queue1.push(root);       int flag = 1;//表示这时候看queue里面的个数看层次        while(!queue1.empty()||!queue2.empty())       {          if(!queue1.empty()&&flag)          {              if(queue1.size()==1)              {                result.push_back(queue1.front()->val);                flag =  0 ;              }              if(queue1.front()->left != NULL)                 queue2.push(queue1.front()->left);              if(queue1.front()->right != NULL)                 queue2.push(queue1.front()->right);                queue1.pop();          }         if(!queue2.empty()&&!flag)          {              if(queue2.size()==1)              {                result.push_back(queue2.front()->val);                flag = 1;              }              if(queue2.front()->left != NULL)                 queue1.push(queue2.front()->left);              if(queue2.front()->right != NULL)                 queue1.push(queue2.front()->right);                queue2.pop();          }       }       //printVector(result);       return result;    }


0 0
原创粉丝点击