这篇文章主要介绍“PHP怎么实现镜像二叉树”,在日常操作中,相信很多人在PHP怎么实现镜像二叉树问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP怎么实现镜像二叉树”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
操作给定的二叉树,将其变换为源二叉树的镜像。
二叉树的镜像定义:源二叉树
/ \
10
/ \ / \
7 9 11
镜像二叉树
/ \
6
/ \ / \
9 7 5
思路:
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
}
}
}
到此,关于“PHP怎么实现镜像二叉树”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/4234147/blog/4621191