Skip to content

Commit

Permalink
Same Tree - Iterative
Browse files Browse the repository at this point in the history
  • Loading branch information
dksifoua committed Sep 10, 2024
1 parent 4d5c374 commit 9944b5e
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 0 deletions.
21 changes: 21 additions & 0 deletions src/main/java/io/dksifoua/leetcode/sameTree/Solution.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

import io.dksifoua.leetcode.utils.TreeNode;

import java.util.LinkedList;
import java.util.Queue;

public class Solution {

public boolean isSameTree(TreeNode p, TreeNode q) {
Expand All @@ -12,4 +15,22 @@ public boolean isSameTree(TreeNode p, TreeNode q) {
&& this.isSameTree(p.getLeft(), q.getLeft())
&& this.isSameTree(p.getRight(), q.getRight());
}

public boolean isSameTreeIterative(TreeNode p, TreeNode q) {
Queue<TreeNode> pQueue = new LinkedList<>() {{ add(p); }};
Queue<TreeNode> qQueue = new LinkedList<>() {{ add(q); }};
while (!pQueue.isEmpty() && !qQueue.isEmpty()) {
TreeNode _p = pQueue.poll(), _q = qQueue.poll();
if (_p == null && _q == null) continue;
if (_p == null || _q == null || _p.getValue() != _q.getValue()) return false;

pQueue.add(_p.getLeft());
qQueue.add(_q.getLeft());

pQueue.add(_p.getRight());
qQueue.add(_q.getRight());
}

return true;
}
}
10 changes: 10 additions & 0 deletions src/test/java/io/dksifoua/leetcode/sameTree/SolutionTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,19 @@ void test1() {
assertTrue(solution.isSameTree(TreeNode.build(new Integer[] { 1, 2, 3 }), TreeNode.build(new Integer[] { 1, 2, 3 })));
}

@Test
void test1Iterative() {
assertTrue(solution.isSameTreeIterative(TreeNode.build(new Integer[] { 1, 2, 3 }), TreeNode.build(new Integer[] { 1, 2, 3 })));
}

@Test
void test2() {
assertFalse(solution.isSameTree(TreeNode.build(new Integer[] { 1, 2 }), TreeNode.build(new Integer[] { 1, null, 2 })));
}

@Test
void test2Iterative() {
assertFalse(solution.isSameTreeIterative(TreeNode.build(new Integer[] { 1, 2 }), TreeNode.build(new Integer[] { 1, null, 2 })));
}

}

0 comments on commit 9944b5e

Please sign in to comment.