二叉树 -php实现先序、中序、后序遍历二叉树
来源:互联网 发布:js empty 编辑:程序博客网 时间:2024/06/04 17:41
二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆
[php]view plaincopy
- <?php
- class Node{
- public $value;
- public $left;
- public $right;
- }
- //先序遍历 根节点 ---> 左子树 ---> 右子树
- function preorder($root){
- $stack=array();
- array_push($stack,$root);
- while(!empty($stack)){
- $center_node=array_pop($stack);
- echo $center_node->value.' ';//先输出根节点
- if($center_node->right!=null){
- array_push($stack,$center_node->right);//压入左子树
- }
- if($center_node->left!=null){
- array_push($stack,$center_node->left);
- }
- }
- }
- //中序遍历,左子树---> 根节点 ---> 右子树
- function inorder($root){
- $stack = array();
- $center_node = $root;
- while (!empty($stack) || $center_node != null) {
- while ($center_node != null) {
- array_push($stack, $center_node);
- $center_node = $center_node->left;
- }
- $center_node = array_pop($stack);
- echo $center_node->value . " ";
- $center_node = $center_node->right;
- }
- }
- //后序遍历,左子树 ---> 右子树 ---> 根节点
- function tailorder($root){
- $stack=array();
- $outstack=array();
- array_push($stack,$root);
- while(!empty($stack)){
- $center_node=array_pop($stack);
- array_push($outstack,$center_node);//最先压入根节点,最后输出
- if($center_node->left!=null){
- array_push($stack,$center_node->left);
- }
- if($center_node->right!=null){
- array_push($stack,$center_node->right);
- }
- }
- while(!empty($outstack)){
- $center_node=array_pop($outstack);
- echo $center_node->value.' ';
- }
- }
- $a=new Node();
- $b=new Node();
- $c=new Node();
- $d=new Node();
- $e=new Node();
- $f=new Node();
- $a->value='A';
- $b->value='B';
- $c->value='C';
- $d->value='D';
- $e->value='E';
- $f->value='F';
- $a->left=$b;
- $a->right=$c;
- $b->left=$d;
- $c->left=$e;
- $c->right=$f;
- preorder($a);//A B D C E F
- echo '<hr/>';
- inorder($a);//D B A E C F
- echo '<hr/>';
- tailorder($a);//D B E F C A
结果:
A B D C E F
D B A E C F
D B E F C A
二叉树的三种遍历,先,中,后遍历10
先序就是先遍历根,再遍历左子树,再遍历右子树。例如上图的先序遍历是:ABCDEFGHK
中序就是先遍历左子树,再遍历根,再右子树。例如上图的中序遍历是:BDCAEHGKF
后序就是先遍历左子树,再右子树,再根。例如上图的后序遍历是:DCBHKGFEA
本回答由提问者推荐
答案纠错|评论(4)
139111
其他回答
前序遍历:ABDECFG
中序遍历:DBEAFCG
后序遍历:DEBFGCA
前序遍历:1 2 4 3 5 7 6
中序遍历:2 4 1 5 7 3 6
后序遍历:4 2 7 5 6 3 1
做类似的题目,你可以先由两个遍历画出二叉树。通过形象的二叉树来写出另一个遍历,写的方法如上(递归)。画出二叉树的方法如下:
已知一棵二叉树的前序序列和中序序列,构造该二叉树的过程如下:
1. 根据前序序列的第一个元素建立根结点;
2. 在中序序列中找到该元素,确定根结点的左右子树的中序序列;
3. 在前序序列中确定左右子树的前序序列;
4. 由左子树的前序序列和中序序列建立左子树;
5. 由右子树的前序序列和中序序列建立右子树。
已知一棵二叉树的后序序列和中序序列,构造该二叉树的过程如下:
1. 根据后序序列的最后一个元素建立根结点;
2. 在中序序列中找到该元素,确定根结点的左右子树的中序序列;
3. 在后序序列中确定左右子树的后序序列;
4. 由左子树的后序序列和中序序列建立左子树;
5. 由右子树的后序序列和中序序列建立右子树。
阅读全文
0 0
- 二叉树 -php实现先序、中序、后序遍历二叉树
- php实现先序、中序、后序遍历二叉树
- PHP实现非递归先序、中序、后序遍历二叉树
- C++ 二叉树实现 创建,先序遍历,中序遍历,后序遍历
- C实现二叉树的先序遍历,中序遍历,后序遍历
- c语言实现二叉树的先序遍历,中序遍历,后序遍历
- 二叉树T 的先序遍历、中序遍历、后序遍历(递归实现)
- java实现二叉树的先序遍历,中序遍历,后序遍历
- 实现二叉树的先序遍历、中序遍历、后序遍历
- 二叉树3(构造二叉树、先序遍历、中序遍历、后序遍历)
- 二叉树的遍历(先序、中序、后序)
- 二叉树的先序、中序、后序遍历
- 先序,中序,后序遍历二叉树
- 二叉树 - 先序、中序、后序遍历
- 二叉树的遍历:先序、中序、后序
- 先序,中序,后序,层次遍历二叉树
- 先序、中序、后序遍历二叉树 算法
- 二叉树的先序、中序、后序遍历
- 设计模式学习总结:工厂方法(Factory Method)
- tp thinkphp where表达式使用方法详解 condition筛选
- 赛后感想
- 积分商城消费系统定制
- 简单方法实现仿超级课程表界面
- 二叉树 -php实现先序、中序、后序遍历二叉树
- python-生成式、生成器、迭代器
- 2013年第四届蓝桥杯C/C++程序设计本科B组省赛 第39级台阶
- 第十节、图片处理:html中的图片处理
- 对爬虫技术的理解--Crawler
- 怎样做好测试用例的评审
- 笔记3
- 图的遍历
- clEnqueueCopyBufferRect 和 cv::Mat中的ROI