关于php:算法镜像二叉树的PHP实现

42次阅读

共计 1824 个字符,预计需要花费 5 分钟才能阅读完成。

有根底的间接看代码即可

 操作给定的二叉树,将其变换为源二叉树的镜像。二叉树的镜像定义:源二叉树 
           /  
  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
    }
  }
}
以上内容心愿帮忙到大家,很多 PHPer 在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不晓得该从那里动手去晋升,对此我整顿了一些 PHP 高级、架构视频材料和大厂 PHP 面试 PDF| 收费获取能够关注公众号:PHP 开源社区

正文完
 0