Skip to content

Commit 6e82672

Browse files
authored
Merge pull request #1667 from bradhanson/csharp-0094-binary-tree-inorder-traversal-bh
Create 0094-binary-tree-inorder-traversal.cs
2 parents ad6ba44 + b69cc80 commit 6e82672

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* public class TreeNode {
4+
* public int val;
5+
* public TreeNode left;
6+
* public TreeNode right;
7+
* public TreeNode(int val=0, TreeNode left=null, TreeNode right=null) {
8+
* this.val = val;
9+
* this.left = left;
10+
* this.right = right;
11+
* }
12+
* }
13+
*/
14+
public class Solution {
15+
public IList<int> InorderTraversal(TreeNode root) {
16+
// return InorderTraversalRecursive(root).ToList();
17+
return InorderTraversalIterative(root).ToList();
18+
}
19+
20+
// Time: O(n)
21+
// Space: O(n)
22+
private IEnumerable<int> InorderTraversalRecursive(TreeNode node) {
23+
if (node == null) {
24+
return Enumerable.Empty<int>();
25+
}
26+
27+
return InorderTraversalRecursive(node.left)
28+
.Append(node.val)
29+
.Concat(InorderTraversalRecursive(node.right));
30+
}
31+
32+
// Time: O(n)
33+
// Space: O(n)
34+
private IEnumerable<int> InorderTraversalIterative(TreeNode node) {
35+
List<int> result = new();
36+
Stack<TreeNode> stack = new();
37+
while (node != null || stack.Any()) {
38+
while (node != null) {
39+
stack.Push(node);
40+
node = node.left;
41+
}
42+
node = stack.Pop();
43+
result.Add(node.val);
44+
node = node.right;
45+
}
46+
return result;
47+
}
48+
}

0 commit comments

Comments
 (0)