加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP排序二叉树基本功能实现方法示例

发布时间:2021-05-25 16:26:21 所属栏目:PHP教程 来源:网络整理
导读:本篇章节讲解PHP排序二叉树基本功能实现方法。分享给大家供大家参考,具体如下: 这里演示了排序二叉树节点的插入,中序遍历,极值的查找和特定值的查找的功能. 基本没有提供什么概念和定义.建议先简单了解一下本文提供的几个概念在来看本文. 实际上,只是简

本篇章节讲解PHP排序二叉树基本功能实现方法。分享给大家供大家参考,具体如下:

这里演示了排序二叉树节点的插入,中序遍历,极值的查找和特定值的查找的功能.

基本没有提供什么概念和定义.建议先简单了解一下本文提供的几个概念在来看本文.

实际上,只是简单的提供了代码,注释也很少,各位辛苦了.

二叉树:

在计算机科学中,二叉树是每个节点最多有两个子树的树结构。

排序二叉树:

左孩子节点的值小于父节点的值,右孩子节点的值大于父节点的值.

几个概念:

根节点 叶子节点 左子树 右子树 中序遍历 前序遍历 后序遍历 二叉树查找

中序遍历:

先遍历左子树,在遍历本节点,在遍历右节点.遍历之后的结果就是排序好之后的结果

key = $key; } } class BinaryTree{ public $root; public $sortArr = []; // 插入节点 public function insertNode($node,$newNode){ if ($node->key < $newNode->key){ // 如果父节点小于子节点,插到右边 if (empty($node->right)){ $node->right = $newNode; }else{ $this->insertNode($node->right,$newNode); } }elseif ($node->key > $newNode->key){ // 如果父节点大于子节点,插到左边 if (empty($node->left)){ $node->left = $newNode; }else{ $this->insertNode($node->left,$newNode); } } } public function insert($key){ $newNode = new Node($key); if (empty($this->root)){ $this->root = $newNode; }else{ $this->insertNode($this->root,$newNode); } } // 中序遍历 public function midSort(){ $this->midSortNode($this->root); } public function midSortNode($node){ if (!empty($node)){ $this->midSortNode($node->left); array_push($this->sortArr,$node->key); $this->midSortNode($node->right); } } // 寻找极值 public function findMin(){ //不断的找它的左子树,直到这个左子树的节点为叶子节点. if (!empty($this->root)){ $this->findMinNode($this->root); } } public function findMinNode(Node $node){ if (!empty($node->left)){ $this->findMinNode($node->left); }else{ echo '这个二叉树的最小值为:'.$node->key; } } public function findMax(){ if (!empty($this->root)){ $this->findMaxNode($this->root); } } public function findMaxNode(Node $node){ if (!empty($node->right)){ $this->findMaxNode($node->right); }else{ echo '这个二叉树的最大值为:'.$node->key; } } // 查找特定的值 public function find($val = ''){ if (!empty($val)){ $this->findNode($this->root,$val); } } public function findNode(Node $node,$val){ if ($node->key == $val){ echo '找到'.$val.'了'; }else if ($node->key > $val){ // 如果 父节点的值 大于要查找的值,那么查找它的左子树 if (!empty($node->left)){ $this->findNode($node->left,$val); }else{ echo '没有这个东西!'; } }else if ($node->key < $val){ if (!empty($node->right)){ $this->findNode($node->right,$val); }else{ echo '没有这个东西!'; } } } } $tree = new BinaryTree(); // 节点插入 $nodes = array(8,3,10,1,6,14,4,7,13); foreach ($nodes as $value){ $tree->insert($value); } // 中序遍历 //$tree->midSort(); //print_r($tree->sortArr); // 寻找极值 //$tree->findMin(); //$tree->findMax(); // 查找特定的值 $tree->find(7); echo "
"; $tree->find(11);

运行结果:

找到7了 没有这个东西!

更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》及《》

希望本文所述对大家PHP程序设计有所帮助。

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读