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

镜像二叉树
思路:
1.左子树赋给temp
2.temp赋给右子树
3.右子树赋给左子树
4.递归
1 2 3 4 5 6 | mirror(root)
temp=root->left
root->left=root->right
root-right=temp
mirror(root->left)
mirror(root->right)
|
Salin selepas log masuk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | 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 );
|
Salin selepas log masuk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | 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
}
}
}
|
Salin selepas log masuk
Atas ialah kandungan terperinci php如何实现镜像二叉树(代码). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!