zoukankan      html  css  js  c++  java
  • LeetCode -- Symmetric Tree

    Question:

    Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).

    For example, this binary tree is symmetric:

        1
       / 
      2   2
     /  / 
    3  4 4  3
    

    But the following is not:

        1
       / 
      2   2
          
       3    3
    

    Note:
    Bonus points if you could solve it both recursively and iteratively.

    confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.

    Analysis:

    问题描述:给出一棵二叉树,判断它是否是自己的镜像树。即围绕着中心节点对称。

    思路一:遍历整棵二叉树,然后判断每层的节点是否是对称的。

    思路二:递归判断。首先判断该节点的左右节点是否对称,然后保存左右节点,依次递归判断左节点的左节点与右节点的右节点是否对称,以及左节点的右节点与右节点的左节点是否对称。

    Answer:

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    public class Solution {
        public boolean isSymmetric(TreeNode root) {
            if(root == null)
                    return true;
            return judge(root.left, root.right);
        }
        
        public boolean judge(TreeNode left, TreeNode right) {
                if(left == null && right == null)
                    return true;
                if(left == null || right == null)
                    return false;
                return left.val == right.val && judge(left.left, right.right) 
                        && judge(left.right, right.left);
        }
    }
  • 相关阅读:
    leetcode165
    leetcode63
    leetcode92
    leetcode86
    捣鼓Haskell
    递归操作链表
    treap(堆树)
    贪心策略 — 分数背包
    LeetCode.21
    LeetCode.94
  • 原文地址:https://www.cnblogs.com/little-YTMM/p/4854956.html
Copyright © 2011-2022 走看看