php如何镜像,php如何实现镜像二叉树(代码)

本篇文章给大家带来的内容是关于php如何实现镜像二叉树(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

操作给定的二叉树,将其变换为源二叉树的镜像。

二叉树的镜像定义:源二叉树

ee20a95ecd1ad51e22f7cf9382efed3a.png

镜像二叉树

01f4a03691d7be0a30df4fcba425398f.png思路:

1.左子树赋给temp

2.temp赋给右子树

3.右子树赋给左子树

4.递归mirror(root)

temp=root->left

root->left=root->right

root-right=temp

mirror(root->left)

mirror(root->right)class TreeNode{

var $val;

var $left = NULL;

var $right = NULL;

function __construct($val){

$this->val = $val;

}

}

function Mirror(&$root){

if($root==null){

return null;

}

$temp=$root->left;

$root->left=$root->right;

$root->right=$temp;

Mirror($root->left);

Mirror($root->right);

}

//构造一个树

$node5=new TreeNode(5);

$node7=new TreeNode(7);

$node9=new TreeNode(9);

$node11=new TreeNode(11);

$node6=new TreeNode(6);

$node10=new TreeNode(10);

$node8=new TreeNode(8);

$node8->left=$node6;

$node8->right=$node10;

$node6->left=$node5;

$node6->right=$node7;

$node10->left=$node9;

$node10->right=$node11;

$tree=$node8;

//镜像这棵二叉树

var_dump($tree);

Mirror($tree);

var_dump($tree);

object(TreeNode)#7 (3) {

["val"]=>

int(8)

["left"]=>

object(TreeNode)#5 (3) {

["val"]=>

int(6)

["left"]=>

object(TreeNode)#1 (3) {

["val"]=>

int(5)

["left"]=>

NULL

["right"]=>

NULL

}

["right"]=>

object(TreeNode)#2 (3) {

["val"]=>

int(7)

["left"]=>

NULL

["right"]=>

NULL

}

}

["right"]=>

object(TreeNode)#6 (3) {

["val"]=>

int(10)

["left"]=>

object(TreeNode)#3 (3) {

["val"]=>

int(9)

["left"]=>

NULL

["right"]=>

NULL

}

["right"]=>

object(TreeNode)#4 (3) {

["val"]=>

int(11)

["left"]=>

NULL

["right"]=>

NULL

}

}

object(TreeNode)#7 (3) {

["val"]=>

int(8)

["left"]=>

object(TreeNode)#6 (3) {

["val"]=>

int(10)

["left"]=>

object(TreeNode)#4 (3) {

["val"]=>

int(11)

["left"]=>

NULL

["right"]=>

NULL

}

["right"]=>

object(TreeNode)#3 (3) {

["val"]=>

int(9)

["left"]=>

NULL

["right"]=>

NULL

}

}

["right"]=>

object(TreeNode)#5 (3) {

["val"]=>

int(6)

["left"]=>

object(TreeNode)#2 (3) {

["val"]=>

int(7)

["left"]=>

NULL

["right"]=>

NULL

}

["right"]=>

object(TreeNode)#1 (3) {

["val"]=>

int(5)

["left"]=>

NULL

["right"]=>

NULL

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值