php怎么获得二叉树镜像
-
PHP中获得二叉树镜像可以通过递归算法来实现。下面是实现二叉树镜像的PHP代码:
“`php
class TreeNode {
public $val;
public $left = null;
public $right = null;function __construct($val) {
$this->val = $val;
}
}function invertTree($root) {
if ($root == null) {
return null;
}$temp = $root->left;
$root->left = $root->right;
$root->right = $temp;invertTree($root->left);
invertTree($root->right);return $root;
}// 示例用法:
$root = new TreeNode(1);
$root->left = new TreeNode(2);
$root->right = new TreeNode(3);
$root->left->left = new TreeNode(4);
$root->left->right = new TreeNode(5);$mirror = invertTree($root);
// 输出镜像树的值
function printTree($root) {
if ($root == null) {
return;
}
echo $root->val . ” “;printTree($root->left);
printTree($root->right);
}printTree($mirror);
“`以上代码定义了一个`TreeNode`类表示二叉树的节点,使用递归的方式来实现求二叉树镜像的逻辑。首先判断根节点是否为空,如果为空则直接返回null;否则,交换根节点的左右子树,然后递归调用函数来求解左右子树的镜像。最后返回根节点。
示例用法中创建了一个二叉树,并输出求得的镜像树的节点值。可以根据需要修改示例中的二叉树结构和值。运行以上代码,得到镜像树的节点值输出:
“`
1 3 2 5 4
“`从输出结果可以看出,二叉树的镜像树的节点值输出是正确的。
2年前 -
要获取二叉树的镜像,可以通过递归的方法来实现。在递归中,交换每个节点的左右子树即可。
下面是一个使用PHP实现获取二叉树镜像的代码示例:
“`php
/**
* 定义二叉树节点类
*/
class TreeNode {
public $val; // 节点值
public $left; // 左子树
public $right; // 右子树public function __construct($val = 0) {
$this->val = $val;
$this->left = null;
$this->right = null;
}
}/**
* 获取二叉树的镜像
* @param TreeNode $root
* @return TreeNode
*/
function mirrorTree($root) {
// 递归的终止条件
if ($root == null) {
return null;
}// 交换左右子树
$temp = $root->left;
$root->left = $root->right;
$root->right = $temp;// 递归处理左右子树
mirrorTree($root->left);
mirrorTree($root->right);return $root;
}
“`使用上述代码,可以先根据二叉树的结构创建一个二叉树,然后调用`mirrorTree`函数获取其镜像。下面是一个具体的使用示例:
“`php
// 创建二叉树
$root = new TreeNode(1);
$root->left = new TreeNode(2);
$root->right = new TreeNode(3);
$root->left->left = new TreeNode(4);
$root->left->right = new TreeNode(5);// 获取二叉树的镜像
$mirrorRoot = mirrorTree($root);// 输出镜像二叉树的值
function printTree($root) {
if ($root == null) {
return;
}echo $root->val . ” “;
printTree($root->left);
printTree($root->right);
}printTree($mirrorRoot); // 输出镜像二叉树的值:1 3 2 5 4
“`上述代码中,我们先创建了一个二叉树,并使用`mirrorTree`函数获取了该二叉树的镜像。最后,我们使用`printTree`函数输出镜像二叉树的值。输出结果为`1 3 2 5 4`。
2年前 -
要获得二叉树的镜像,可以采用递归的方法。下面是php实现二叉树镜像的示例代码:
“`php
/**
* 二叉树节点类
*/
class TreeNode {
public $value; // 节点值
public $left; // 左子节点
public $right; // 右子节点public function __construct($value) {
$this->value = $value;
$this->left = null;
$this->right = null;
}
}/**
* 获得二叉树的镜像
* @param TreeNode $root 根节点
* @return TreeNode
*/
function getMirror($root) {
// 递归的终止条件
if ($root == null) {
return null;
}// 交换左子树和右子树
$temp = $root->left;
$root->left = $root->right;
$root->right = $temp;// 递归处理左子树和右子树
getMirror($root->left);
getMirror($root->right);return $root;
}// 示例代码
// 创建一个二叉树
$root = new TreeNode(1);
$node2 = new TreeNode(2);
$node3 = new TreeNode(3);
$node4 = new TreeNode(4);
$node5 = new TreeNode(5);$root->left = $node2;
$root->right = $node3;
$node2->left = $node4;
$node3->right = $node5;// 获得镜像
$newRoot = getMirror($root);// 输出镜像二叉树的值
echo “镜像二叉树的前序遍历结果:”;
preorderTraversal($newRoot);
echo “\n”;/**
* 前序遍历二叉树
* @param TreeNode $root 根节点
*/
function preorderTraversal($root) {
if ($root == null) {
return;
}echo $root->value . ” “;
preorderTraversal($root->left);
preorderTraversal($root->right);
}
“`在上面的代码中,我们定义了一个`TreeNode`类来表示二叉树的节点,每个节点包含一个值和左右子节点的指针。然后,我们定义了一个`getMirror`函数来获得二叉树的镜像。
在`getMirror`函数中,我们首先判断根节点是否为空,如果为空则返回null。否则,我们交换根节点的左子节点和右子节点,然后递归地处理左子树和右子树。最后返回处理完的根节点。
在示例代码中,我们创建了一个二叉树,并调用`getMirror`函数来获得二叉树的镜像,然后输出镜像二叉树的前序遍历结果。前序遍历以根节点、左子树、右子树的顺序遍历二叉树。
这样,我们就可以通过递归的方式获得二叉树的镜像。
2年前