天津做公司的网站,网站建设就业方向,html编写新闻页面,牛天下网站做的怎么样思路#xff1a; 一、验证 左右子树是否可翻转对称的#xff1f; 二、分析左右子树情况#xff1a; 1#xff09;左右都也空 对称 2#xff09;左右有一个为空 不对称 3#xff09;左右都不为空#xff0c;但数字不同 不对称 4#xff09;左右都不为空#xff0c;且数… 思路 一、验证 左右子树是否可翻转对称的 二、分析左右子树情况 1左右都也空 对称 2左右有一个为空 不对称 3左右都不为空但数字不同 不对称 4左右都不为空且数字相同 当前节点对称继续往下层节点递归 三、递归用后续遍历因为必须先知道子节点是否相同然后才返回给上一层节点左右中先对比外侧节点再对比内测节点最后两侧都是true才可以。
class Solution {public boolean isSymmetric(TreeNode root) {//验证 左右子树是否可翻转对称的boolean ans func(root.left,root.right);return ans;}public boolean func(TreeNode leftNode, TreeNode rightNode) {if(leftNode null rightNode null) { //1、左右都也空 对称return true;}if(leftNode null rightNode ! null) { //2、左右有一个为空 不对称return false;}if(leftNode ! null rightNode null){return false;}if (leftNode.val ! rightNode.val){ //3、左右不为空但数字不同 不对称return false;}//4、代码到这里就是左右不为空且数字相同那就得递归下去//后续遍历 左右中boolean a func(leftNode.left, rightNode.right);//左对比外侧boolean b func(leftNode.right, rightNode.left);//右对比内侧return a b; //中}}