从顶层开始逐层打印二叉树节点数据
来源:互联网 发布:新东方网络课 编辑:程序博客网 时间:2024/05/17 04:57
从顶层开始逐层打印二叉树节点数据
10
/ \
6 14
/ \ / \
4 8 12 16
逐层打印的结果为 10 6 14 4 8 12 16
采用队列的方式 ,先把根节点存入队列,然后再出列,输出这个数据。如果有左子树,把左子树根节点入列,如果右子树不为空,把右子树的根节点入列,然后如果队列不为空,则出列。直到队列为空。
void print(TreeNode * root)
{
queue<TreeNode> tree; //声明一个树节点的队列
TreeNode tmp = NULL;
tree.push(root); //首先把根节点入列
while( ! tree.empty())
{
tmp = tree.front();
tree.pop();
(*visit)(tmp);
if(tmp->left != NULL)
{
tree.push(tmp->left);
}
if(tmp->right != NULL)
{
tree.push(tmp->right);
}
}
}
void visit(TreeNode *node)
{
printf("%d",node->data);
}
#include <iostream>//#include <deque>#include <queue>using namespace std;typedef struct BtreeNode{int data;struct BtreeNode *left ,*right;}node;void create(node *&r ,int m){if(r==NULL){node *t =new node();t->data = m;t->left =NULL; t->right =NULL;r = t;}else{ if(m>r->data) {create(r->right ,m); } if(m<r->data) {create(r->left ,m); }}}void print(node *r){queue<node*>tmp;tmp.push(r);while(!tmp.empty()){ node *p = tmp.front();cout<<p->data<<endl;tmp.pop();if(p->left){tmp.push(p->left);}if(p->right){tmp.push(p->right);}}} jingxiang(node *&r){ if(!r) { return; } node *p = r; p = r->left; r->left = r->right; r->right = p; if(r->left) { jingxiang(r->left); } if(r->right) { jingxiang(r->right); }}void main(){node *root=NULL;create(root , 10);create(root , 6);create(root , 4);create(root , 8);create(root , 14);create(root , 12);create(root , 16);print(root);jingxiang(root);print(root);}
- 从顶层开始逐层打印二叉树节点数据
- 如何从顶层开始逐层打印二叉树
- 从底层逐层的开始打印出二叉树的节点数据
- 从顶部开始逐层打印二叉树结点数据
- 逐层打印二叉树节点数据
- 从顶部开始逐层打印二叉树结点数据(不用queue的版本)
- 怎样从顶部开始逐层打印二叉树结点数据?蛋疼解法
- 怎样从顶部开始逐层打印二叉树结点数据?
- 6、怎样从顶部开始逐层打印二叉树
- 从上往下打印出二叉树的每个节点,同层节点从左至右打印。
- 从上往下打印出二叉树的每个节点,同层节点从左至右打印。
- 从上往下打印出二叉树的每个节点,同层节点从左至右打印
- 从上往下打印出二叉树的每个节点,同层节点从左至右打印。
- 从上往下打印出二叉树的每个节点,同层节点从左至右打印。
- 从上往下打印出二叉树的每个节点,同层节点从左至右打印。
- C++从上往下打印出二叉树的每个节点,同层节点从左至右打印(牛客剑指offer)
- 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 java
- java 从上往下打印出二叉树的每个节点,同层节点从左至右打印。
- android 分辨率自适应
- 数据库的自动备份
- navigationController
- 本地环境访问zencart,前台正常,后台空白
- 博弈知识汇总
- 从顶层开始逐层打印二叉树节点数据
- 谁能捱过“沉寂期”?
- Vim 的一些配置
- 运算符的重载及调用方式
- 多校第三场:hdu 4320(小数的进制转换,有限小数的条件)
- C# 多线程基础,仅以此心得献给那些渴望学习多线程的朋友
- linux下安装hadoop-2.0.0-alpha(双namenode federation)安装过程整理
- C#向共享文件夹上传及下载文件
- VC实现查找纯真数据库