leetcode_107 Binary Tree Level Order Travelsal II
来源:互联网 发布:保险网络推广 编辑:程序博客网 时间:2024/05/29 19:55
题目分析:
- 二叉树层序遍历实现,要求输出每层的数据信息(从底层开始输出)。
解题思路:
对比分析
此题与102题基本思想相同,都是求树的层序遍历,唯一的不同是102是从根节点层开始输出,当此题是从叶节点层开始输出。实现方法基本一样,只需在最后对生成的序列进行逆转操作即可。
递归实现
1)判断根节点是否问空,不为空,访问;
2)递归访问当前节点的下一层左子树节点;
3)递归访问当前节点的下一层右子树节点。
非递归实现
利用队列实现,具体方法如下:
1)若树节点非空,则入队;
2)出队,访问当前节点,并将其左右子节点(非空)分别入队;
3)循环执行步骤2),直到队列为空即可。
注意:需要一个变量记录每次节点的数目,这样才能正确输出每次节点信息。由于输出需要
实现程序
//递归实现void levelTra(TreeNode *root, int level, vector< vector<int> > &result){ // 判断根节点是否为空 if (root == NULL) return ; // 不为空,则访问 if (level == result.size()) { vector<int> temp; result.push_back(temp); } result[level].push_back(root->val); // 递归访问下一层的左、右子树 levelTra(root->left, level + 1, result); levelTra(root->right, level + 1, result);}vector< vector<int> > levelOrder(TreeNode *root){ vector< vector<int> > result; levelTra(root, 0, result); // 进行逆转操作 return vector< vector<int> >(result.rbegin(), result.rend());} //非递归实现 vector< vector<int> > levelOrder1(TreeNode *root){ vector< vector<int> > result; if (root == NULL) return result; queue<TreeNode *> que; // 根节点入队 que.push(root); // 循环遍历,直到队列为空 while (!que.empty()) { int size = que.size(); vector<int> help; for (int i = 0; i < size; i++) { TreeNode *temp = que.front(); // 出队 que.pop(); help.push_back(temp->val); // 左子树不为空,则左子树入队 if (temp->left != NULL) que.push(temp->left); // 右子树不为空,则右子树入队 if (temp->right != NULL) que.push(temp->right); } result.push_back(help); } // 进行逆转操作 reverse(result.begin(), result.end()); return result;}
0 0
- leetcode_107 Binary Tree Level Order Travelsal II
- leetcode_107. Binary Tree Level Order Traversal II
- leetcode_107. Binary Tree Level Order Traversal II 二叉树层次遍历,利用python的list特性实现队列功能
- LeetCode: Binary Tree Level Order Traversal II
- [LeetCode]Binary Tree Level Order Traversal II
- LeetCode Binary Tree Level Order Traversal II
- [Leetcode] Binary Tree Level Order Traversal II
- Binary Tree Level Order Traversal II
- Binary Tree Level Order Traversal II
- LeetCode Binary Tree Level Order Traversal II
- [LeetCode] Binary Tree Level Order Traversal II
- Binary Tree Level Order Traversal II
- Binary Tree Level Order Traversal II
- Binary Tree Level Order Traversal II
- 【leetcode】Binary Tree Level Order Traversal II
- [LeetCode]Binary Tree Level Order Traversal II
- Binary Tree Level Order Traversal II
- Binary Tree Level Order Traversal II
- 《剑指offer》笔记(java)
- Java并发:原子变量和非阻塞同步机制
- Activity生命周期
- 二叉树搜索
- Dependency Walker使用说明
- leetcode_107 Binary Tree Level Order Travelsal II
- 【动态规划】最小编辑代价
- 在一个窗口显示多个视频子窗口
- ADB基本命令
- iOS序列桢动画创建方式
- MFC——ComBox用法大全
- 编译mysql5.7.11的Qt5.6驱动QMYSQL
- springMVC4(11)使用注解完成数据格式化
- 垃圾回收算法