17-- 从上到下打印二叉树,按层打印。
2015-09-27 19:06
316 查看
// // main.cpp // subStructureInTree // // Created by Hugo Cao on 15/7/10. // Copyright (c) 2015年 Hugo Cao . All rights reserved. // /* 问题描述: 从上到下打印二叉树,按层打印。 思路:这里用队列实现了转化。很有意思的想法。 */ #include <iostream> #include <deque> using namespace std; #define Data int typedef struct binaaryTreeNode { Data m_value; binaaryTreeNode *m_pleft; binaaryTreeNode *m_pright; }btNode, *binTree; binTree addNode(Data value) { binTree bt = NULL; bt = new btNode; if (bt == NULL) { cout << "申请地址错误" << endl; return NULL; } bt->m_value = value; bt->m_pleft = NULL; bt->m_pright = NULL; return bt; } bool connectTreeNode(binTree parrentNode, binTree leftSonNode = NULL, binTree rightSonNode = NULL) { if (parrentNode == NULL || (leftSonNode == NULL && rightSonNode == NULL)) { cout << "结点输入问题" << endl; return false; } parrentNode->m_pleft = leftSonNode; parrentNode->m_pright = rightSonNode; return true; } binTree createBinaryATree(binTree Ahead) { binTree p1 = addNode(8); binTree p2 = addNode(8); binTree p3 = addNode(7); binTree p4 = addNode(9); binTree p5 = addNode(2); binTree p6 = addNode(4); binTree p7 = addNode(7); connectTreeNode(p1, p2, p3); connectTreeNode(p2, p4, p5); connectTreeNode(p5, p6, p7); return (Ahead = p1); } //按层打印 void PrintFromTopToButtom(binTree bt) { //如果是空结点就退出 if (!bt) { return ; } //使用队列作为模型 deque<binTree> dequeTreeNode; dequeTreeNode.push_back(bt); //将根结点压入队列 //栈为空的时候退出循环 while (dequeTreeNode.size()) { //返回队列头指针 binTree pNode = dequeTreeNode.front(); printf("%d\n", pNode->m_value); //打印向量信息 dequeTreeNode.pop_front(); //弹出 //层遍历,其实也是先左后右,向队列压入元素。 if (pNode->m_pleft) { dequeTreeNode.push_back(pNode->m_pleft); } if (pNode->m_pright) { dequeTreeNode.push_back(pNode->m_pright); } } } //打印二叉树 void BLR_print_BinaryTree(binTree bt) { if (bt == NULL) return ; cout << bt->m_value << " " << endl; BLR_print_BinaryTree(bt->m_pleft); BLR_print_BinaryTree(bt->m_pright); } int main() { binTree bt_A = NULL; bt_A = createBinaryATree(bt_A); PrintFromTopToButtom(bt_A); cout << endl; return 0; }
相关文章推荐
- 16--二叉树的镜像
- java排列
- java 集合介绍
- ThinkPHP--url地址大小写问题
- 15-- 输入两个二叉树A和B,判断B树是否包含于A树。
- 14--合并两个排序的链表
- 14--反转链表
- A child container failed during start
- HTTPD 工作原理
- 图解Linux命令之--lsattr命令
- 13--输出链表中倒数第k个节点,
- 13--输入一个整数数组,实现一个函数来调整数组中数字的顺序
- poj 2152 树形dp(建立消防站)
- jquery Ajax
- 12--打印1到最大的N为数字。
- 利用VS生成静态库
- 软件生存周期
- 酷狗音乐推出了自媒体APP百花
- C++字符串操作函数
- 用Wget下载整个网站