二刷:发现这几题关于树的我都不会
/**
* 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 recur(root.left,root.right);
}
public boolean recur(TreeNode L,TreeNode R){
if(L==null&&R==null)
return true;
if(L==null||R==null)
return false;
if(L.val!=R.val)
return false;
return recur(L.left,R.right)&&recur(L.right,R.left);
}
}
时间复杂度 O(N) : 其中 N 为二叉树的节点数量,每次执行 recur() 可以判断一对节点是否对称,因此最多调用 N/2次 recur() 方法。
空间复杂度 O(N): 最差情况下,二叉树退化为链表,系统使用O(N) 大小的栈空间。
时间复杂度O(n) 空间复杂度O(n)