思路
D、L、R 代表三个节点。
前序遍历:DLR,根在前
中序遍历:LDR,根在中
后续遍历:LRD,根在后
这题写的很清楚,是中序遍历,所以也不用多讲。
代码
第一版,只完成了递归,计划二刷改迭代。
public class BinaryTreeInorderTraversal94 {
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> integers = new ArrayList<Integer>();
if (root == null) return integers;
if (root.left != null) {
List<Integer> integersLeft = inorderTraversal(root.left);
integers.addAll(integersLeft);
}
integers.add(root.val);
if (root.right != null) {
List<Integer> integersRight = inorderTraversal(root.right);
integers.addAll(integersRight);
}
return integers;
}
}
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {
}
TreeNode(int val) {
this.val = val;
}
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}