LeetCode Symmetric Tree

来源:互联网 发布:通天西游装备强化数据 编辑:程序博客网 时间:2024/05/29 17:47

Description:

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

Solution:

两种遍历树节点的方法,第一种是每次都先左后右,另外一种是先右后左。如果每次对应的节点都一样,则表示相同。

import java.util.*;public class Solution {LinkedList<TreeNode> forward = new LinkedList<TreeNode>();LinkedList<TreeNode> backward = new LinkedList<TreeNode>();TreeNode node1, node2;boolean flag1, flag2;public boolean isSymmetric(TreeNode root) {forward.add(root);backward.add(root);while (!forward.isEmpty() && !backward.isEmpty()) {node1 = forward.pop();node2 = backward.pop();flag1 = node1 == null;flag2 = node2 == null;if (flag1 || flag2) {if (flag1 == flag2)continue;elsereturn false;}if (node1.val != node2.val)return false;forward.add(node1.left);forward.add(node1.right);backward.add(node2.right);backward.add(node2.left);}return true;}}


0 0
原创粉丝点击