各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案

Str Tom,为分享PHP技术和解决方案,贡献一份自己的力量!
收藏本站(不迷路),每天更新好文章!
当前位置:首页 > CMS教程 > PHP

PHP基于非递归算法实现先序、中序及后序遍历二叉树操作的示例

管理员 2023-09-05
PHP
129

PHP基于非递归算法实现先序、中序及后序遍历二叉树操作的示例

内容导读

收集整理的这篇技术教程文章主要介绍了PHP基于非递归算法实现先序、中序及后序遍历二叉树操作的示例,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2081字,纯文字阅读大概需要3分钟

内容图文

这篇文章主要介绍了PHP基于非递归算法实现先序、中序及后序遍历二叉树操作,结合实例形式分析了php采用非递归算法对二叉树进行先序、中序及后序遍历操作的原理与具体实现技巧,需要的朋友可以参考下

本文实例讲述了PHP基于非递归算法实现先序、中序及后序遍历二叉树操作。分享给大家供大家参考,具体如下:

概述:

二叉树遍历原理如下:

针对上图所示二叉树遍历:

1. 前序遍历:先遍历根结点,然后遍历左子树,最后遍历右子树。

ABDHECFG

2.中序遍历:先遍历左子树,然后遍历根结点,最后遍历右子树。

HDBEAFCG

3.后序遍历:先遍历左子树,然后遍历右子树,最后遍历根节点。

HDEBFGCA

实现方法:

先序遍历:利用栈先进后出的特性,先访问根节点,再把右子树压入,再压入左子树。这样取出的时候是先取出左子树,最后取出右子树。

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->right != null)   array_push($stack, $center_node->right);  if($center_node->left != null)   array_push($stack, $center_node->left); } while($empty($outstack)){  $center_node = array_pop($outstack);  echo $center_node->value; }}

您可能感兴趣的文章:

PHP使用两个栈实现队列功能的方法的讲解

详解PHP序列化和反序列化原理的讲解

基于 Swoole 的微信扫码登录功能实现代码的过程讲解

以上就是PHP基于非递归算法实现先序、中序及后序遍历二叉树操作的示例的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的PHP基于非递归算法实现先序、中序及后序遍历二叉树操作的示例全部内容,希望文章能够帮你解决PHP基于非递归算法实现先序、中序及后序遍历二叉树操作的示例所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

扫码关注

qrcode

QQ交谈

回顶部