面试题28. 对称的二叉树--主站 101

    技术2023-09-26  79

    方法:递归

    算法思想:三段式。中左右。

    时间复杂度 O(N): 其中 N 为二叉树的节点数量,每次执行 recur() 可以判断一对节点是否对称,因此最多调用 N/2 次 recur() 方法。 空间复杂度 O(N): 最差情况下,二叉树退化为链表,系统使用 O(N)大小的栈空间。 边界条件:判空 补充知识:当 LL 和 RR 同时越过叶节点: 此树从顶至底的节点都对称,因此返回 true,就是到底了 ;

    /**

     * 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) {

            return root==null?true:rec(root.left,root.right); // 判断根,从初始左右开始递归

        }

     

        public boolean rec(TreeNode l ,TreeNode r){

            if(l==null&&r==null) return true;  //正确路线

            if(l==null||r==null||l.val!=r.val) return false;//错误路线

            return rec(l.left,r.right)&&rec(l.right,r.left);  //递归左右相对应

        }

    }

    Processed: 0.010, SQL: 9