Skip to content

Instantly share code, notes, and snippets.

@acious
Created March 1, 2020 02:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save acious/2be4748e4783b38f8f2b1c026beeb93c to your computer and use it in GitHub Desktop.
Save acious/2be4748e4783b38f8f2b1c026beeb93c to your computer and use it in GitHub Desktop.
101. Symmetric Tree
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
static int rootValue;
public boolean isSymmetric(TreeNode root) {
if (root == null) {
return true;
}
rootValue = root.val;
List<Integer> leftTravasalResult = new ArrayList<>();
travasalLeftTree(leftTravasalResult, root);
List<Integer> rightTravasalResult = new ArrayList<>();
travasalRightTree(rightTravasalResult, root);
if (leftTravasalResult.size() != rightTravasalResult.size()) {
return false;
}
for (int i = 0; i < leftTravasalResult.size(); i++) {
if (leftTravasalResult.get(i) != rightTravasalResult.get(i)) {
return false;
}
}
return true;
}
private static void travasalLeftTree(List<Integer> leftTravasalResult, TreeNode node) {
if (node == null) {
leftTravasalResult.add(null);
return;
}
leftTravasalResult.add(node.val);
travasalLeftTree(leftTravasalResult, node.left);
if (node.val == rootValue) {
return;
}
travasalLeftTree(leftTravasalResult, node.right);
}
private static void travasalRightTree(List<Integer> rightTravasalResult, TreeNode node) {
if (node == null) {
rightTravasalResult.add(null);
return;
}
rightTravasalResult.add(node.val);
travasalRightTree(rightTravasalResult, node.right);
if (node.val == rootValue) {
return;
}
travasalRightTree(rightTravasalResult, node.left);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment