利用php怎么实现一个二叉树遍历算法

  介绍

这篇文章将为大家详细讲解有关利用php怎么实现一个二叉树遍历算法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

创建的二叉树如下图所示

利用php怎么实现一个二叉树遍历算法

php代码如下所示:

& lt;及# 63;php   {类节点   公共美元价值;   公共child_left美元;   公共child_right美元;   }   最后遍历类{//前序遍历:先访问根节点,再遍历左子树,最后遍历右子树,并且在遍历左右子树时,仍需先遍历根节点,然后访问左子树,最后遍历右子树   公共静态函数预订(根美元){   数组$堆栈=();   array_push(堆栈,根美元);   而(!空栈($)){   (center_node=最后一美元堆栈);   回声center_node→美元价值。& # 39;& # 39;;//先把右子树节点入栈,以确保左子树节点先出栈   如果($ center_node→child_right !=null) array_push(堆栈,center_node→美元child_right);   如果($ center_node→child_left !=null) array_push(堆栈,center_node→美元child_left);   }   }//中序遍历:先遍历左子树,然后访问根节点,最后遍历右子树,并且在遍历左右子树的时候。仍然是先遍历左子树,然后访问根节点,最后遍历右子树   公共静态函数midOrder(根美元){   数组$堆栈=();   center_node=美元根;   而(!空堆栈($)| | $ center_node !=null) {   而($ center_node !=null) {   array_push(堆栈,center_node美元);   center_node=center_node→美元child_left;   }   (center_node=最后一美元堆栈);   回声center_node→美元价值。& # 39;& # 39;;   center_node=center_node→美元child_right;   }   }//后序遍历:先遍历左子树,然后遍历右子树,最后访问根节点;同样,在遍历左右子树的时候同样要先遍历左子树,然后遍历右子树,最后访问根节点   公共静态函数endOrder(根美元){   数组$ push_stack=();   数组$ visit_stack=();   array_push (push_stack,根美元);   而(!空(push_stack美元)){   (center_node=最后一美元push_stack);   array_push (visit_stack, center_node美元);//左子树节点先入pushstack美元的栈,确保在美元visitstack中先出栈   如果($ center_node→child_left !=null) array_push (push_stack, center_node→美元child_left);   如果($ center_node→child_right !=null) array_push (push_stack, center_node→美元child_right);   }   而(!空(visit_stack美元)){   (center_node=最后一美元visit_stack);   回声center_node→美元价值。& # 39;& # 39;;   }   }   }//创建二叉树   一美元=新节点();   $ b=新节点();   $ c=新节点();   $ d=新节点();   $ e=新节点();   $ f=新节点();   $ g=新节点();   $ h=新节点();   $ i=新节点();   一个→美元价值=https://www.yisu.com/zixun/' a ';   $ b -> value=' b ';   $ c -> value=' c ';   $ d -> value=' d ';   $ e ->价值=癳”;   $ f -> value=' f ';   $ g -> value=' g ';   $ h -> value=' h ';   $ i ->价值=拔摇?   -> child_left=b美元;   -> child_right=c美元;   $ b -> child_left=$ d;   $ b -> child_right=$ g;   $ c -> child_left=$ e;   $ c -> child_right=$ f;   $ d -> child_left=$ h;   $ d -> child_right=$ i;//前序遍历   遍历:预订(美元);//结果是:B D H G F C E   echo '
';//中序遍历   遍历:midOrder(美元);//结果是:H D G B E C F   echo '
';//后序遍历   遍历:endOrder(美元);//结果是:H F I D G B E C

关于利用php怎么实现一个二叉树遍历算法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

利用php怎么实现一个二叉树遍历算法