PHP中如何实现二叉树排序算法?
- 内容介绍
- 文章标签
- 相关推荐
本文共计215个文字,预计阅读时间需要1分钟。
plaintext将数组元素插入二叉树,并按顺序遍历输出:$binaryTree=new BinaryTree();foreach ($array as $value) { $binaryTree->insert($value);}$binaryTree->inOrderTraverse(function($key) { echo $key . ' ';});class Node { public $key=null; public $left=null; public $right=null;}
gistfile1.txt$array = [5,2,9,3,10,13,2,1,20,26,18,62]; $binaryTree = new BinaryTree(); foreach($array as $value){ $binaryTree->insert($value); } $binaryTree->inOrderTraverse(function($key){echo $key.'';}); class Node{ public $key = null; public $left = null; public $right = null; public function __construct($key){ $this-> key = $key; } } class BinaryTree{ public $root = null; public function insert($key){ $newNode = new Node($key); if($this->root === null){ $this->root = $newNode; }else{ $this->insertNode($this->root,$newNode); } } private function insertNode($node, $newNode){ if($node->key < $newNode->key){ if($node->left === null){ $node->left = $newNode; }else{ $this->insertNode($node->left,$newNode); } }else{ if($node->right === null){ $node->right = $newNode; }else{ $this->insertNode($node->right, $newNode); } } } //排序取出数据 public function inOrderTraverse($callback){ $this->inOrderTraverseNode($this->root,$callback); } private function inOrderTraverseNode($node,$callback){ if($node !== null){ $this->inOrderTraverseNode($node->left,$callback); $callback($node->key); $this->inOrderTraverseNode($node->right,$callback); } } }
本文共计215个文字,预计阅读时间需要1分钟。
plaintext将数组元素插入二叉树,并按顺序遍历输出:$binaryTree=new BinaryTree();foreach ($array as $value) { $binaryTree->insert($value);}$binaryTree->inOrderTraverse(function($key) { echo $key . ' ';});class Node { public $key=null; public $left=null; public $right=null;}
gistfile1.txt$array = [5,2,9,3,10,13,2,1,20,26,18,62]; $binaryTree = new BinaryTree(); foreach($array as $value){ $binaryTree->insert($value); } $binaryTree->inOrderTraverse(function($key){echo $key.'';}); class Node{ public $key = null; public $left = null; public $right = null; public function __construct($key){ $this-> key = $key; } } class BinaryTree{ public $root = null; public function insert($key){ $newNode = new Node($key); if($this->root === null){ $this->root = $newNode; }else{ $this->insertNode($this->root,$newNode); } } private function insertNode($node, $newNode){ if($node->key < $newNode->key){ if($node->left === null){ $node->left = $newNode; }else{ $this->insertNode($node->left,$newNode); } }else{ if($node->right === null){ $node->right = $newNode; }else{ $this->insertNode($node->right, $newNode); } } } //排序取出数据 public function inOrderTraverse($callback){ $this->inOrderTraverseNode($this->root,$callback); } private function inOrderTraverseNode($node,$callback){ if($node !== null){ $this->inOrderTraverseNode($node->left,$callback); $callback($node->key); $this->inOrderTraverseNode($node->right,$callback); } } }

