4.4-按行输出二叉树(same in LeetCode)
来源:互联网 发布:cf雷神刷枪软件 编辑:程序博客网 时间:2024/06/04 18:36
Given a binary search tree, design an algorithm which creates a linked list of all the nodes at each depth (eg, if you have a tree with depth D, you’ll have D linked lists).
LeetCode:https://oj.leetcode.com/submissions/detail/3391867/
#include <iostream>#include <vector>#include <queue>using namespace std;struct TreeNode{ int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {}};vector<vector<int> > levelOrder_2vec(TreeNode *root){ vector<vector<int> > ans; vector<int> level; vector<TreeNode *> cur,next; cur.push_back(root); while(!cur.empty()) { level.clear(); next.clear(); for(int i=0;i<cur.size();i++) { level.push_back(cur[i]->val); if(cur[i]->left) next.push_back(cur[i]->left); if(cur[i]->right) next.push_back(cur[i]->right); } ans.push_back(level); cur=next; } return ans;}vector<vector<int> > levelOrder_queue(TreeNode *root){ vector<vector<int> > ans; vector<int> level; queue<TreeNode *> myqueue; myqueue.push(root); int cur_count=1; while(!myqueue.empty()) { level.clear(); int next_count=0; for(int i=0;i<cur_count;i++) { TreeNode * tmp = myqueue.front(); level.push_back(tmp->val); myqueue.pop(); if(tmp->left) { myqueue.push(tmp->left); next_count++; } if(tmp->right) { myqueue.push(tmp->right); next_count++; } } ans.push_back(level); cur_count = next_count; } return ans;}int main(){ TreeNode * a = new TreeNode(1); TreeNode * b = new TreeNode(2); TreeNode * c = new TreeNode(3); TreeNode * d = new TreeNode(4); TreeNode * e = new TreeNode(5); TreeNode * f = new TreeNode(6); a->left=b; a->right=c; b->right=d; c->left=e; c->right=f; vector<vector<int> > ans = levelOrder_2vec(a); for(int i=0; i<ans.size(); i++) { for(int j=0; j<ans[i].size(); j++) cout << ans[i][j]; cout << endl; } cout <<"---------------------" <<endl; vector<vector<int> > ans2 = levelOrder_queue(a); for(int i=0; i<ans2.size(); i++) { for(int j=0; j<ans2[i].size(); j++) cout << ans2[i][j]; cout << endl; } return 0;}
0 0
- 4.4-按行输出二叉树(same in LeetCode)
- 4.1-判断二叉树是否平衡(same in LeetCode)
- LeetCode 100. Same Tree(二叉树)
- [LeetCode][二叉树]Same Tree
- LeetCode | Same Tree(相等的二叉树)
- 100. Same Tree(leetcode)二叉树判等
- 【LeetCode】Same Tree --- 二叉树相等
- 【leetcode 二叉树相等判断】Same Tree
- LeetCode 二叉树 | 100. Same Tree
- 【leetcode】比较两棵二叉树是否相同(Same Tree)
- Leetcode Same Tree 判断两棵二叉树是否相同
- [LeetCode]100. Same Tree--判断二叉树是否相同
- leetcode 100. Same Tree 二叉树DFS深度优先遍历
- Leetcode#100. Same Tree(判断两个二叉树相同)
- LeetCode-100-Same Tree 水题 判断二叉树相等
- LeetCode--Same Tree(判断两个二叉树是否相同)Python
- Same Tree(等价二叉树)
- 2.2-找链表倒数第k个(same in LeetCode)
- 开源夏令营中期报告
- 黑马程序员——IO流学习总结
- C语言07
- 二叉查找树BST----java实现
- IIS最大并发连接数
- 4.4-按行输出二叉树(same in LeetCode)
- 系统开发权限总结篇
- linux--档案的搜寻
- 华为副总裁徐家骏离职:年薪千万工作感悟十二条
- NSString类的使用及其内部方法
- UVA 445 Marvelous Mazes
- BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第4章节--理解你的开发选项 应用程序和解决方案类型
- 张飞传
- UVA 1649