Leetcode之PHP版题目解析(101. Symmetric Tree)

Leetcode · curry · 于 24天前 发布 · 42 次阅读

题目描述

给定一棵二叉树,判断是否是自身的镜像(围绕他的中心是不是对称)

题目示例

For example, this binary tree [1,2,2,3,4,4,3] is symmetric

    1
   / \
  2   2
 / \ / \
3  4 4  3

But the following [1,2,2,null,3,null,3] is not:

  1
 / \
 2   2
   \   \
   3    3

图一是对称的,图二不是对称的.

题目思路

对于根节点的两个子节点,可以分成多种情况 两个子节点都是空,那说明他们是对称的返回true 一个子节点为空,另一个子节点不为空,false 两个子节点都不为空,但是他们不相等,false, 两个子节点不为空且相等,继续判断他们的子节点(暂且称为左子树和右子树吧),把左子树的左子节点和右子树的右子节点进行比较,把左子树的右子节点和右子树的左子节点进行比较. 所以实现的代码是递归的思想.

实现代码

 /**
     * @param TreeNode $root
     * @return Boolean
     */
    function isSymmetric($root) {
        if(!$root){
            return true;
        }
        return $this->check_tree($root->left,$root->right);
    }
    
    function check_tree($x,$y){
        if(!$x && !$y){
            return true;
        }
        if(!$x || !$y || $x->val !== $y->val){
            return false;
        }
        return $this->check_tree($x->left,$y->right) &&
            $this->check_tree($x->right,$y->left);
    }
 

本文由 curry 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。

共收到 0 条回复 二叉树 php 算法
没有找到数据。
添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
吴亲库里的深夜食堂