关闭

【Leetcode】Symmetric Tree

265人阅读 评论(0) 收藏 举报
分类:

题目链接:https://leetcode.com/problems/symmetric-tree/

题目:

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.

思路:

注意我在递归中保存结果的方式,跟Kth Smallest Element in a BST 算法2和Balanced Binary Tree 中是一样的。

基本框架是:

	boolean result = true;
	public boolean recur(TreeNode root){
		if(root!=null){
			if(satisfy a condition){
				result = false;
			}
			recur(root.left);
			recur(root.right);
		}
		return result;
	}


算法:

	public boolean isSym(TreeNode p, TreeNode q) {
		if (p == null && q == null) {//都为空
			return true;
		}else if (p == null || q == null) {//有一个不为空
			result = false;
		}else if (p.val == q.val) {
			isSym(p.left, q.right);//注意对称
			isSym(p.right, q.left);
		} else {
			result = false;
		}
		return result;
	}

	public boolean isSymmetric(TreeNode root) {
		if (root == null) { 
			return true;
		}
		if (root.left == null && root.right == null) { //单结点
			return true;
		}
		if (root.left == null || root.right == null) {//不对称
			return false;
		}
		return isSym(root.left, root.right); 
	}

	boolean result = true;


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:535369次
    • 积分:8365
    • 等级:
    • 排名:第2624名
    • 原创:305篇
    • 转载:6篇
    • 译文:0篇
    • 评论:35条
    博客专栏
    文章分类
    最新评论