void main() {
print('Hello world! - dart.jsrun.net');
}
List<int> inorderTraversal(TreeNode? root) {
List<int> res = [];
if(root == null) return res;
List<TreeNode> stacks = [];
while(root != null || stacks.isNotEmpty) {
while(root != null) {
stacks.add(root);
root = root?.left;
}
if(stacks.isNotEmpty) {
TreeNode node = stacks.removeLast();
res.add(node.val);
root = node.right;
}
}
return res;
}
List<int> inorderTraversal(TreeNode? root) {
List<int> res = [];
inorder(root, res);
return res;
}
inorder(TreeNode? root, List<int> res) {
if(root == null) return;
inorder(root.left, res);
res.add(root.val);
inorder(root.right, res);
}
class TreeNode {
int val;
TreeNode? left;
TreeNode? right;
TreeNode([this.val = 0, this.left, this.right]);
}