剑指Offer系列---(25)从上往下打印二叉树
来源:互联网 发布:淘宝淘气值贷款新口子 编辑:程序博客网 时间:2024/04/29 23:09
1.题目描述:
从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。
2.分析:
每一次打印一个结点的时候,如果该结点有子结点,则把该结点的子结点放到一个队列的末尾。接下来到队列的头部取出最早进入队列的结点,重复前面的打印操作,直至队列中所有的结点都被打印出来为止。
3.源代码:
#include <iostream>#include <stdio.h>#include <deque>using namespace std;typedef struct BinaryTreeNode{ char m_nValue; struct BinaryTreeNode* m_pLeft; struct BinaryTreeNode* m_pRight;}*BinaryTree;void CreateTree(BinaryTree &T){ char data; cin>>data; if(data=='*') T=NULL; else { T = (BinaryTree)malloc(sizeof(BinaryTreeNode)); T->m_nValue = data; CreateTree(T->m_pLeft); CreateTree(T->m_pRight); }}void Print(BinaryTree T){ if(T) { cout<<T->m_nValue<<endl; Print(T->m_pLeft); Print(T->m_pRight); }}void PrintFromTopToDown(BinaryTreeNode *pRoot){ if(!pRoot) return; deque<BinaryTreeNode*>myDeque; myDeque.push_back(pRoot); while(!myDeque.empty()) { BinaryTreeNode *pTop = myDeque.front(); cout<<pTop->m_nValue<<" "; myDeque.pop_front(); if(pTop->m_pLeft != NULL) { myDeque.push_back(pTop->m_pLeft); } if(pTop->m_pRight != NULL) { myDeque.push_back(pTop->m_pRight); } }}int main(int argc,char *argv[]){ BinaryTree T1; cout<<"以先序遍历的顺序创建的二叉树T1:"<<endl; CreateTree(T1); cout<<"原始的二叉树T1的先序遍历序列为:"<<endl; Print(T1); cout<<"按层输出的结果为:"; PrintFromTopToDown(T1); cout<<endl; return 0;}
4.运行效果:
以先序遍历的顺序创建的二叉树T1:124**5**3**原始的二叉树T1的先序遍历序列为:12453按层输出的结果为:1 2 3 4 5 Program ended with exit code: 0
0 0
- 剑指Offer系列---(25)从上往下打印二叉树
- 剑指offer系列源码-从上往下打印二叉树
- 【剑指offer系列】 从上往下打印二叉树___23
- 剑指offer系列-T23从上往下打印二叉树
- 剑指offer: 从上往下打印二叉树(树)
- 剑指offer:从上往下打印二叉树
- 剑指offer--从上往下打印二叉树
- 剑指Offer之 - 从上往下打印二叉树
- 剑指offer 23 - 从上往下打印二叉树
- 剑指offer之从上往下打印二叉树
- 《剑指offer》之从上往下打印二叉树
- 《剑指offer》从上往下打印二叉树
- 剑指offer—从上往下打印二叉树
- 剑指Offer-23-从上往下打印二叉树
- 剑指offer:从上往下打印二叉树
- 《剑指offer》——从上往下打印二叉树
- 剑指offer-从上往下打印二叉树
- 剑指offer 22 从上往下打印二叉树
- postgresql使用文档之一 初始化数据存储区
- 国际化(1)---JS文件国际化
- vmware压缩磁盘空间的方法[转]
- AltiumDesigner创建FPGA多引脚元件库
- UI07_ViewController
- 剑指Offer系列---(25)从上往下打印二叉树
- 有符号整数与无符号整数相加问题
- STL—— deque双向队列
- switchlayout
- 第三周项目2-建设“顺序表”算法库
- View中的draw和onDraw,dispatchDraw的区别
- BZOJ 1494 NOI2007 生成树计数 状压DP+矩阵乘法
- Web中树形数据(层级关系数据)的实现―以行政区树为例
- hdu 4738 Caocao's Bridges【求最小权值的桥】