Microsoft leetcode (Symmetric Tree)

Symmetric Tree

Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).

For example, this binary tree [1,2,2,3,4,4,3] is symmetric:

    1
   /   2   2
 / \ / 3  4 4  3

But the following [1,2,2,null,3,null,3] is not:

    1
   /   2   2
   \      3    3

Recursive://1. For every level, if root‘s left == root‘s right then we can say it is symmetric.//2. If root1 && root2 are null return true, if root1 || root2 is null return false.class TreeNode {  int val;  TreeNode left;  TreeNode right;  public TreeNode(int val) {    this.val = val;  }}public boolean isSymmetric(TreeNode root) {  return isMirror(root, root);}public boolean isMirror(TreeNode root1, TreeNode root2) {  if (root1 == null && root2 == null) return true;  if (root1 == null || root2 == null) return false;  return root1.val == root2.val && isMirror(root1.left, root2.right)    && isMirror(root1.right, root2.left);}

Iterative:DFS -> Stack BFS -> QueueUse stack to traverse all the nodes in the tree and check if left equals to right.

public boolean isSymmetric(TreeNode root) {  if (root == null) return true;  Stack<TreeNode> stack = new Stack<>();  stack.push(root.left);  stack.push(root.right);  while(!stack.isEmpty()) {    TreeNode n1 = stack.pop(), n2 = stack.pop();    if (n1 == null && n2 == null) continue;    if (n1 == null || n2 == null || n1.val != n2.val) return false;    else {      stack.push(n1.left);      stack.push(n2.right);      stack.push(n1.right);      stack.push(n2.left);    }  }  return true;}

原文地址:https://www.cnblogs.com/jjjiajia/p/8450041.html

时间: 2024-11-14 04:56:04

Microsoft leetcode (Symmetric Tree)的相关文章

LeetCode: Symmetric Tree [101]

[题目] 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 bot

Leetcode:Symmetric Tree 判断对称树

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 解题分析: 二叉树递归,始终是第一颗二叉树的左子树和第二颗二叉树的右

LeetCode: Symmetric Tree 解题报告

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  3But the following is not:    1   / \  2   2   \   \   3    3Note:

[leetcode]Symmetric Tree @ Python

原题地址:https://oj.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 i

[Leetcode] 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 rec

LeetCode -- Symmetric Tree

Question: 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

LeetCode——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 中文:给定一二叉树,检查它是否是它自己的镜像(比如,以中心对称). 递归: public bool

[leetcode] 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 分析: 题目是要判断左右两颗子树是否对称,采用只要根节点的值相同,并且左边子树的左子树和右

leetcode:Symmetric Tree【Python版】

#error caused by:#1:{} 没有考虑None输入#2:{1,2,2} 没有控制h和t#3:{4,-57,-57,#,67,67,#,#,-97,-97} 没有考虑负号,将s从str变成list,采用9999代表空数值: --------------------- 逐层进行对称性验证,出现不对称就结束: 1 # Definition for a binary tree node 2 # class TreeNode: 3 # def __init__(self, x): 4 #