在php中二叉树怎么用
-
在PHP中,可以使用类实现二叉树数据结构。下面是一个简单的示例:
“`php
// 定义二叉树节点类
class Node {
public $data;
public $left;
public $right;public function __construct($data) {
$this->data = $data;
$this->left = null;
$this->right = null;
}
}// 定义二叉树类
class BinaryTree {
public $root;public function __construct() {
$this->root = null;
}// 向二叉树插入节点
public function insert($data) {
$newNode = new Node($data);
if ($this->root === null) {
$this->root = $newNode;
} else {
$current = $this->root;
while (true) {
if ($data < $current->data) {
if ($current->left === null) {
$current->left = $newNode;
break;
}
$current = $current->left;
} else {
if ($current->right === null) {
$current->right = $newNode;
break;
}
$current = $current->right;
}
}
}
}// 前序遍历二叉树
public function preOrderTraversal($node) {
if ($node !== null) {
echo $node->data . ” “;
$this->preOrderTraversal($node->left);
$this->preOrderTraversal($node->right);
}
}// 中序遍历二叉树
public function inOrderTraversal($node) {
if ($node !== null) {
$this->inOrderTraversal($node->left);
echo $node->data . ” “;
$this->inOrderTraversal($node->right);
}
}// 后序遍历二叉树
public function postOrderTraversal($node) {
if ($node !== null) {
$this->postOrderTraversal($node->left);
$this->postOrderTraversal($node->right);
echo $node->data . ” “;
}
}
}// 使用二叉树
$tree = new BinaryTree();
$tree->insert(5);
$tree->insert(3);
$tree->insert(7);
$tree->insert(1);
$tree->insert(4);
$tree->insert(6);
$tree->insert(8);echo “前序遍历: “;
$tree->preOrderTraversal($tree->root);echo “\n中序遍历: “;
$tree->inOrderTraversal($tree->root);echo “\n后序遍历: “;
$tree->postOrderTraversal($tree->root);
“`以上代码实现了一个简单的二叉树数据结构,并提供了前序、中序和后序遍历的方法。你可以根据自己的需求进一步在二叉树类中添加其他操作。
2年前 -
在PHP中,可以使用类或者数组来实现二叉树的数据结构。下面是一个使用类来实现二叉树的示例代码:
“`php
class Node {
public $data;
public $left;
public $right;public function __construct($item) {
$this->data = $item;
$this->left = null;
$this->right = null;
}
}class BinaryTree {
public $root;public function __construct() {
$this->root = null;
}public function insert($item) {
$newNode = new Node($item);if ($this->root == null) {
$this->root = $newNode;
} else {
$current = $this->root;
while (true) {
if ($item < $current->data) {
if ($current->left == null) {
$current->left = $newNode;
break;
} else {
$current = $current->left;
}
} else {
if ($current->right == null) {
$current->right = $newNode;
break;
} else {
$current = $current->right;
}
}
}
}
}public function inOrder($node) {
if ($node != null) {
$this->inOrder($node->left);
echo $node->data . ” “;
$this->inOrder($node->right);
}
}public function preOrder($node) {
if ($node != null) {
echo $node->data . ” “;
$this->preOrder($node->left);
$this->preOrder($node->right);
}
}public function postOrder($node) {
if ($node != null) {
$this->postOrder($node->left);
$this->postOrder($node->right);
echo $node->data . ” “;
}
}
}$tree = new BinaryTree();
$tree->insert(5);
$tree->insert(3);
$tree->insert(2);
$tree->insert(4);
$tree->insert(7);
$tree->insert(6);
$tree->insert(8);echo “InOrder traversal: “;
$tree->inOrder($tree->root);
echo “\n”;echo “PreOrder traversal: “;
$tree->preOrder($tree->root);
echo “\n”;echo “PostOrder traversal: “;
$tree->postOrder($tree->root);
echo “\n”;
“`在上面的示例中,首先定义了一个`Node`类,用于表示二叉树中的节点。每个节点包含一个数据项以及指向左子树和右子树的指针。
然后定义了一个`BinaryTree`类,其中包含了二叉树的根节点。通过`insert`方法插入新的节点,`inOrder`、`preOrder`和`postOrder`分别实现了二叉树的中序遍历、前序遍历和后序遍历。
最后创建了一个`BinaryTree`对象,并插入一些节点,然后进行了三种遍历方式的输出。
这个示例代码展示了如何使用类来构建二叉树,并对其进行遍历操作。通过这些操作,可以实现二叉树的常见功能,比如查找、插入、删除和遍历等。
2年前 -
在php中,可以使用类来实现二叉树的数据结构。下面是使用面向对象的方法来实现二叉树的操作流程:
1.定义节点类:
“`
class Node {
public $data;
public $left;
public $right;public function __construct($data) {
$this->data = $data;
$this->left = null;
$this->right = null;
}
}
“`
2.定义二叉树类:
“`
class BinaryTree {
public $root;public function __construct() {
$this->root = null;
}// 向二叉树中插入节点
public function insert($data) {
$node = new Node($data);if ($this->root == null) {
$this->root = $node;
} else {
$this->insertNode($node, $this->root);
}
}// 递归地插入节点
private function insertNode($node, &$subtree) {
if ($subtree == null) {
$subtree = $node;
} else {
if ($node->data < $subtree->data) {
$this->insertNode($node, $subtree->left);
} else {
$this->insertNode($node, $subtree->right);
}
}
}// 先序遍历二叉树
public function preorderTraversal($subtree) {
if ($subtree != null) {
echo $subtree->data . ” “;
$this->preorderTraversal($subtree->left);
$this->preorderTraversal($subtree->right);
}
}// 中序遍历二叉树
public function inorderTraversal($subtree) {
if ($subtree != null) {
$this->inorderTraversal($subtree->left);
echo $subtree->data . ” “;
$this->inorderTraversal($subtree->right);
}
}// 后序遍历二叉树
public function postorderTraversal($subtree) {
if ($subtree != null) {
$this->postorderTraversal($subtree->left);
$this->postorderTraversal($subtree->right);
echo $subtree->data . ” “;
}
}
}
“`
3.使用二叉树:
“`
$tree = new BinaryTree();
$tree->insert(4);
$tree->insert(2);
$tree->insert(7);
$tree->insert(5);
$tree->insert(1);echo “先序遍历:”;
$tree->preorderTraversal($tree->root);
echo “
“;echo “中序遍历:”;
$tree->inorderTraversal($tree->root);
echo “
“;echo “后序遍历:”;
$tree->postorderTraversal($tree->root);
echo “
“;
“`
输出结果为:
“`
先序遍历:4 2 1 7 5
中序遍历:1 2 4 5 7
后序遍历:1 2 5 7 4
“`
通过以上方法,我们可以在php中使用二叉树,并实现插入节点以及三种遍历的操作。2年前