概述
中序遍历,是二叉树遍历的一种。在二叉树中,中序遍历首先遍历左子树,然后遍历根节点,最后遍历右子树。
递归遍历法
public List<Integer> getLDRMethod1(TreeNode treeNode) {
List<Integer> result = new ArrayList<>();
if (treeNode != null) {
result.addAll(getLDRMethod1(treeNode.left));
result.add(treeNode.val);
result.addAll(getLDRMethod1(treeNode.right));
}
return result;
}
递归遍历法就像概述中二叉树定义的一种实现,首先遍历左子树,然后遍历根节点,最后遍历右子树。这种方法一般用来求中序遍历结果,因为递归遍历过程中,方法参数过多本身也是一种资源浪费,而只传递节点的话又不好计算各种累加问题,因此该方法在算法中,能用到场景较少。如果一定要用,也可以通过全局变量的方式来完成。
迭代法
public List<Integer> getLDRMethod(TreeNode treeNode) {
List<Integer> result = new ArrayList<>();
Stack<TreeNode> stack = new Stack<>();
while (!stack.isEmpty() || treeNode != null) {
while (treeNode