操作给定的二叉树,将其变换为源二叉树的镜像。
二叉树的镜像定义:源二叉树
8
/ \
6 10
/ \ / \
5 7 9 11
镜像二叉树
8
/ \
10 6
/ \ / \
11 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] 算法-镜像二叉树的PHP实现的更多相关文章

  1. leetcode(数据结构)—— 镜像二叉树

    镜像二叉树,力扣上面的的题目,这道题很简单,放出来的原因是它要求用两种解法来写这道题——递归和迭代,而且数据结构学到了树,记录自己学习的过程,以免忘了,没地方找. 题目的意图很明显,就是然你写个程序看 ...

  2. 【数据结构与算法】二叉树的 Morris 遍历(前序、中序、后序)

    前置说明 不了解二叉树非递归遍历的可以看我之前的文章[数据结构与算法]二叉树模板及例题 Morris 遍历 概述 Morris 遍历是一种遍历二叉树的方式,并且时间复杂度O(N),额外空间复杂度O(1 ...

  3. 基于visual Studio2013解决面试题之0304镜像二叉树

     题目

  4. LintCode2016年算法比赛----二叉树的所有路径

    二叉树的所有路径 题目描述 给定一棵二叉树,找从根节点到叶子节点的所有路径 样例 给出下面这课二叉树: 1 / \ 2 3 \ 5 所有根到叶子的路径为: [ "1->2->5& ...

  5. 101 Symmetric Tree 判断一颗二叉树是否是镜像二叉树

    给定一个二叉树,检查它是否是它自己的镜像(即,围绕它的中心对称).例如,这个二叉树 [1,2,2,3,4,4,3] 是对称的.    1   / \  2   2 / \ / \3  4 4  3但是 ...

  6. 镜像二叉树——剑指Offer

    https://www.nowcoder.net/practice/564f4c26aa584921bc75623e48ca3011?tpId=13&tqId=11171&tPage= ...

  7. JavaScript--数据结构与算法之二叉树

    树是一种非线性的数据结构,以分层的方式存储数据. 二叉树:查找非常快,而且二叉树添加或者删除元素也非常快. 形象的可以描述为组织结构图,用来描述一个组织的结构.树是由边连接的点组成.树的一些基本概念: ...

  8. 算法随笔-二叉树遍历的N种姿势

    最近在练习用Python刷算法,leetcode上刷了快300题.一开始怀疑自己根本不会写代码,现在觉得会写一点点了,痛苦又充实的刷题历程.对我这种半路出家的人而言,收获真的很大. 今天就从二叉树遍历 ...

  9. 算法:二叉树的层次遍历(递归实现+非递归实现,lua)

    二叉树知识参考:深入学习二叉树(一) 二叉树基础 递归实现层次遍历算法参考:[面经]用递归方法对二叉树进行层次遍历 && 二叉树深度 上面第一篇基础写得不错,不了解二叉树的值得一看. ...

随机推荐

  1. qhfl-4 注册-登录-认证

    认证 任何的项目都需要认证,当用户输入了用户名和密码,验证通过,代表用户登录成功 那HTTP请求是无状态的,下次这个用户再请求,是不可能识别这个用户是否登录的 就要有自己的方式来实现这个认证,用户登录 ...

  2. 第36章:MongoDB-集群--Replica Sets(副本集)

    ①副本集 副本集是一种在多台机器同步数据的进程,副本集体提供了数据冗余,扩展了数据可用性.在多台服务器保存数据可以避免因为一台服务器导致的数据丢失.也可以从硬件故障或服务中断解脱出来,利用额外的数据副 ...

  3. DataBrewery Cubes 连接Kylin

    问题背景 Kylin作为一个极其优秀的MOLAP,提供了完整的Cube创建.更新流程.同时提供了Sql查询.功能上看没有问题,但是在提供查询服务的时候还是有些不友好. sql查询需要常常需要关联Hiv ...

  4. ajax跨域问题小结

    跨域:跨域名的访问,是浏览器对ajax的一种限制,这样可以有效的房子跨站攻击 跨域的范畴: 域名不同  或 端口不同 或 二级域名不同 解决方案: 第一种:由于前端基础薄弱,且该方式老掉牙,不讲解: ...

  5. PHP 生成验证码(+图片没有显示的解决办法)

    今天有需要用到验证码,就敲了个,毕竟用途比较广,所以打算把代码留下来,以后肯定用得上的.当然,今天在做的时候也是有一些问题的,分享出来吧,记录自己所犯的错误,避免以后再掉坑里. 先给个效果图(下面的真 ...

  6. eclipse——JDK安装与环境变量配置步骤

    第一次接触eclipse的时候,让我自己安装jdk和配置环境变量,我是懵逼的,后来百度到找到了一个比较详细的引导,本人测试没问题,截图按步骤如下: JDK安装   步骤1: 步骤2: 配置环境变量 步 ...

  7. mybatis-plus代码生成器

    public class MyBatisPlusGenerator { public static void main(String[] args) throws SQLException { //1 ...

  8. 常用的评价指标:accuracy、precision、recall、F1-score、ROC-AUC、PR-AUC

  9. 使用request爬取拉钩网信息

    通过cookies信息爬取 分析header和cookies 通过subtext粘贴处理header和cookies信息 处理后,方便粘贴到代码中 爬取拉钩信息代码 import requests c ...

  10. 2-3 用组件改写Todolist案例

     编写组件来改写2-2的Todolist案例