链接:https://www.nowcoder.com/questionTerminal/564f4c26aa584921bc75623e48ca3011 来源:牛客网
操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述:
二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 public class Solution { public void Mirror(TreeNode root) { if(root == null) return; if(root.left == null && root.right == null) return; TreeNode pTemp = root.left; root.left = root.right; root.right = pTemp; if(root.left != null) Mirror(root.left); if(root.right != null) Mirror(root.right); } }101. 对称二叉树
https://leetcode-cn.com/problems/symmetric-tree/
给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
1 / \ 2 2 / \ / \ 3 4 4 3
但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
1 / \ 2 2 \ \ 3 3解题思路:类比于牛客的镜像,力扣可以说是镜像且对称的,不仅要求镜像,还要求值的对称。
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public boolean isSymmetric(TreeNode root) { if (root == null){ return true; } return isSymmetricChild(root.left,root.right); } public boolean isSymmetricChild(TreeNode leftTree,TreeNode rightTree){ if((leftTree != null && rightTree == null) || (leftTree == null && rightTree != null)){ return false; } if(leftTree == null && rightTree == null){ return true; } return ((leftTree.val == rightTree.val) && isSymmetricChild(leftTree.left,rightTree.right) && isSymmetricChild(leftTree.right,rightTree.left)); } }