当前位置 : 主页 > 网络编程 > PHP >

PHP 二叉树排序法

来源:互联网 收集:自由互联 发布时间:2021-06-28
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 $lef
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);
		}
	}
	
}
上一篇:666
下一篇:wep前端1
网友评论