Leetcode94. 二叉树的中序遍历
题目:
给定一个二叉树,返回它的中序遍历。
示例:
输入: [1,null,2,3]
1
\
2
/
3
输出: [1,3,2]
题解:
递归+迭代
java代码:
/**
* 迭代中序遍历:左-根-右
* 中序遍历
* * * * ** 1
* * **** / \
* * *****2 3
* * **** /\ \
* * ****4 5 6
* * *** /\
* * ***7 8
* * * 中序遍历:7 4 8 2 5 1 3 6
*
* @param root
* @return
*/
public static List<Integer> inorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList<>();
Stack<TreeNode> stack = new Stack();
while (stack.size() > 0 || root != null) {
if (root != null) {
stack.push(root);
root = root.left;
} else {
TreeNode pop = stack.pop();
res.add(pop.value);
root = pop.right;
}
}
return res;
}
/**
* 递归中序遍历
* @param root
* @return
*/
public List < Integer > inorderTraversal4(TreeNode root) {
List < Integer > res = new ArrayList < > ();
helper(root, res);
return res;
}
public void helper(TreeNode root, List < Integer > res) {
if (root != null) {
if (root.left != null) {
helper(root.left, res);
}
res.add(root.value);
if (root.right != null) {
helper(root.right, res);
}
}
}
本文详细解析了LeetCode第94题“二叉树的中序遍历”,提供了递归与迭代两种解决方案的Java代码实现,并通过示例展示了算法的具体应用。
1198

被折叠的 条评论
为什么被折叠?



