LeetCode Online Judge 题目C# 练习 - Binary Tree Inorder Traversal
2012-10-24 23:41
357 查看
public static List<int> BinaryTreeInorderTraveral(BTNode root) { List<int> ret = new List<int>(); BinaryTreeInorderTraveralHelper(root, ret); return ret; } public static void BinaryTreeInorderTraveralHelper(BTNode root, List<int> ret) { if (root == null) return; BinaryTreeInorderTraveralHelper(root.Left, ret); ret.Add(root.Value); BinaryTreeInorderTraveralHelper(root.Right, ret); }
代码分析:
Inorder Traveral应该没难度吧?但是如果不能用递归就稍稍有点难度了,我相信如果面试问这题,递归肯定不能让面试官满意的。
public static List<int> BinaryTreeInorderTraverlOpt(BTNode root) { List<int> ret = new List<int>(); if (root == null) return ret; Stack<BTNode> stack = new Stack<BTNode>(); bool backtrack = false; stack.Push(root); while (stack.Count > 0) { BTNode curr = stack.Peek(); if (curr.Left != null && !backtrack) { stack.Push(curr.Left); backtrack = false; continue; } ret.Add(curr.Value); stack.Pop(); backtrack = true; if (curr.Right != null) { stack.Push(curr.Right); backtrack = false; } } return ret; }
代码分析:
Iterative做法,用一个 Stack 帮忙,记得要 backtrack flag 来标记当前是往下走还是往上走。往上走的时候就不能再把 curr.Left 加到 Stack 中了。
相关文章推荐
- LeetCode Online Judge 题目C# 练习 - Binary Tree Level Order Traversal II
- LeetCode Online Judge 题目C# 练习 - Binary Tree Level Order Traversal
- LeetCode Online Judge 题目C# 练习 - Unique Binary Search Trees II
- LeetCode OJ平台上Binary Tree Inorder Traversal题目使用java堆栈方式实现
- LeetCode Online Judge 题目C# 练习 - Reverse Nodes in k-Group
- Leetcode练习-Binary Tree Inorder Traversal
- Construct Binary Tree from Inorder and Postorder Traversal(用中序和后序建树,在题目给定的函数中完成) 【leetcode】
- C#解leetcode 106. Construct Binary Tree from Inorder and Postorder Traversal
- Construct Binary Tree from Preorder and Inorder Traversal (中序和后序建树,在题目给的函数中完成)【leetcode】
- LeetCode题目详解——Binary Tree Inorder Traversal
- [LeetCode]Construct Binary Tree from Preorder and Inorder Traversal
- Construct Binary Tree from Preorder and Inorder Traversal(leetcode)
- [leetcode]Construct Binary Tree from Preorder and Inorder Traversal
- [leetCode]Binary Tree Inorder Traversal 递归 && 栈解法
- leetcode - Binary Tree Inorder Traversal
- leetcode[105]Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode94 Binary Tree Inorder Traversal(迭代实现) Java
- leetcode 日经贴,Cpp code -Construct Binary Tree from Preorder and Inorder Traversal
- 【leetcode】【105】Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode 105, 106. Construct Binary Tree from Preorder and Inorder/Inorder and Postorder Traversal