本文主要介绍了PHP基于非递归算法实现先序、中序及后序遍历二叉树操作,结合实例形式分析了php采用非递归算法对二叉树进行先序、中序及后序遍历操作的原理与具体实现技巧,需要的朋友可以参考下,希望能帮助到大家。
概述:
二叉树遍历原理如下:
针对上图所示二叉树遍历:
1. 前序遍历:先遍历根结点,然后遍历左子树,最后遍历右子树。
ABDHECFG
2.中序遍历:先遍历左子树,然后遍历根结点,最后遍历右子树。
HDBEAFCG
3.后序遍历:先遍历左子树,然后遍历右子树,最后遍历根节点。
HDEBFGCA
简单来说先、中、后序遍历都使用DFS(深度优先搜索)的方法,在我的理解中深搜所用的方法就是递归,也就是自己调用自己的。为何使用递归?
我们结合代码进行讲解:
首先是先序遍历二叉树:
function pre($node){
if(!is_null($node)){
echo $node->value;
pre($node->left);
pre($node->right);
}
}
中序遍历
function in($node){
if(!is_null($node)){
pre($node->left);
echo $node->value;
pre($node->right);
}
}
后序遍历
function tail($node){
if(!is_null($node)){
tail($node->left);
tail($node->right);
echo $node->value;
}
}