专栏首页aCloudDeveloperLeetCode: 107_Binary Tree Level Order Traversal II | 二叉树自底向上的层次遍历 | Easy

LeetCode: 107_Binary Tree Level Order Traversal II | 二叉树自底向上的层次遍历 | Easy

本题和上题一样同属于层次遍历,不同的是本题从底层往上遍历,如下:

代码如下:

 1 struct TreeNode {
 2     int            val;
 3     TreeNode*    left;
 4     TreeNode*    right;
 5     TreeNode():val(0),left(NULL),right(NULL){}
 6     TreeNode(int x): val(x), left(NULL),right(NULL) {}
 7 };
 8 
 9 vector<vector<int> > levelOrderTraversalII(TreeNode *root) //非递归的中序遍历(用栈实现)
10 {
11 
12     queue<TreeNode *> tree_queue;
13     vector<vector<int> > tree_vector, tree_rvector;
14     vector<int> svector;
15     int nCount = 0;
16 
17     if (NULL == root) {
18         return tree_vector;
19     }
20     TreeNode *pTemp = root;
21     tree_queue.push(root);
22     tree_queue.push(NULL); //the end of one level.
23 
24     while (true) {
25         TreeNode *pTemp = tree_queue.front();
26         tree_queue.pop();
27 
28         if (!pTemp) { //get the null, put vector<> to vector<vector<>>
29             tree_vector.push_back(svector);
30             nCount ++;
31             svector.clear();
32             if (tree_queue.empty())
33                 break;
34             tree_queue.push(NULL);
35         }
36         else {
37             svector.push_back(pTemp->val);
38             if (pTemp->left) 
39                 tree_queue.push(pTemp->left);
40             if (pTemp->right)
41                 tree_queue.push(pTemp->right);
42         }
43     }
44     while (nCount > 0){
45         svector = tree_vector.at(nCount - 1);
46         tree_rvector.push_back(svector);
47         nCount --;
48     }
49     return tree_rvector;
50 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • LeetCode:94_Binary Tree Inorder Traversal | 二叉树中序遍历 | Medium

    题目:Binary Tree Inorder Traversal 二叉树的中序遍历,和前序、中序一样的处理方式,代码见下: 1 struct TreeNode...

    CloudDeveloper
  • LeetCode: 102_Binary Tree Level Order Traversal | 二叉树自顶向下的层次遍历 | Easy

    题目:Binay Tree Level Order Traversal Given a binary tree, return the level order ...

    CloudDeveloper
  • LeetCode:144_Binary Tree Preorder Traversal | 二叉树的前序遍历 | Medium

    题目:Binary Tree Preorder Traversal 二叉树的前序遍历,同样使用栈来解,代码如下: 1 struct TreeNode { 2...

    CloudDeveloper
  • 【理论坞】为何人 2 只耳朵、有1 张嘴?谈费斯诺定理的运用

    国王收到了三个一模一样的金人,但进贡人要求国王回答问题:三个金人哪个最有价值?无论是称重量还是看做工,都是一模一样。最后,一位老臣拿着三根稻草,插入第一...

    宇相
  • sqoop 兼容性问题

    --direct 只支持mysql 5.0 + 和postgresql 8.3+(只是import) jdbc的jar包需要放在$SQOOP_HOME/lib目...

    岑玉海
  • Android系统启动流程(三)解析SyetemServer进程启动过程

    前言 上一篇我们学习了Zygote进程,并且知道Zygote进程启动了SyetemServer进程,那么这一篇我们就来学习Android7.0版本的Syetem...

    用户1269200
  • [大数据之Sqoop] —— 什么是Sqoop?

    介绍 ? sqoop是一款用于hadoop和关系型数据库之间数据导入导出的工具。你可以通过sqoop把数据从数据库(比如mysql,oracle)导入到hdfs...

    用户1154259
  • sqoop 常用命令整理(二)

      26.Validate 它用来比较源数据和目标数据的数量 它有三个接口 Validator. 它有三个接口 Validator. Property: ...

    岑玉海
  • TensorFlow什么的都弱爆了,强者只用Numpy搭建神经网络

    很多同学入门机器学习之后,直接用TensorFlow调包实现神经网络,对于神经网络内在机理知之甚少。

    abs_zero
  • TensorFlow什么的都弱爆了,强者只用Numpy搭建神经网络

    很多同学入门机器学习之后,直接用TensorFlow调包实现神经网络,对于神经网络内在机理知之甚少。

    大数据文摘

扫码关注云+社区

领取腾讯云代金券