按层打印二叉树
2015-11-18 16:51
295 查看
题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。Code
#include <bits/stdc++.h> using namespace std; struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } }; class Solution { public: vector<vector<int> > Print(TreeNode* pRoot) { vector<vector<int> > ans; queue<TreeNode* > Q; if(pRoot) Q.push(pRoot); int num = 1; int dept=0; while(!Q.empty()){ int num1=0; vector<int >vc; for(int i=0;i<num;i++){ TreeNode* tmp=Q.front(); Q.pop(); if(tmp->left) Q.push(tmp->left),num1++; if(tmp->right) Q.push(tmp->right),num1++; vc.push_back(tmp->val); } ans.push_back(vc); dept++; num=num1; } return ans; } }f; int main() { TreeNode f1=TreeNode(1); TreeNode f2=TreeNode(2); TreeNode f3=TreeNode(3); TreeNode f4=TreeNode(4); f1.left=&f2; f2.left=&f4; f1.right=&f3; TreeNode* root = &f1; vector<vector<int> > c = f.Print(root); for(int i=0;i<=2;i++){ vector<int > tmp = c[i]; for(int j=0;j<tmp.size();j++) printf("%d ",tmp[j]); puts(""); } return 0; }
相关文章推荐
- AVL树-自平衡二叉查找树(Java实现)
- C语言二叉树的非递归遍历实例分析
- 使用C语言构建基本的二叉树数据结构
- C++非递归队列实现二叉树的广度优先遍历
- C#使用前序遍历、中序遍历和后序遍历打印二叉树的方法
- C#非递归先序遍历二叉树实例
- C++非递归建立二叉树实例
- C语言实现找出二叉树中某个值的所有路径的方法
- C++实现二叉树遍历序列的求解方法
- C语言实现二叉树遍历的迭代算法
- 用C语言判断一个二叉树是否为另一个的子结构
- C++实现二叉树非递归遍历方法实例总结
- C++二叉树结构的建立与基本操作
- 深入遍历二叉树的各种操作详解(非递归遍历)
- JavaScript数据结构和算法之二叉树详解
- java使用归并删除法删除二叉树中节点的方法
- Java中二叉树数据结构的实现示例
- python数据结构之二叉树的建立实例
- python数据结构树和二叉树简介
- python数据结构之二叉树的统计与转换实例