二叉树排序
排序二叉树是一种特殊结构的二叉树,可以非常方便地对树中所有节点进行排序和检索。
排序二叉树要么是一棵空二叉树,要么是具有下列性质的二叉树:
- 若它的左子树不空,则左子树上所有节点的值均小于它的根节点的值;
- 若它的右子树不空,则右子树上所有节点的值均大于它的根节点的值;
- 它的左、右子树也分别为排序二叉树。
中序遍历排序对应的数组:[2,3,4,8,9,9,10,13,18,21】
PHP二叉树排序
class Node
{
public $key;
public $left;
public $right;
public function __construct($key)
{
$this->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)