中序遍历(LDR)是 二叉树遍历的一种,也叫做 中根遍历、中序周游。在二叉树中,先左后根再右。巧记:左根右。
中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树
若 二叉树为空则结束返回,
否则:
(1)中序遍历左子树
(2)访问根结点
(3)中序遍历右子树
如图所示
中序遍历结果:DBEAFC
import java.util.Stack;
public class Test {
public static void main(String[] args) {
TreeNode[] node = new TreeNode[10];
for (int i = 0; i < 10; i++) {
node[i] = new TreeNode(i);
}
for (int i = 0; i < 10; i++) {
if (i * 2 + 1 < 10)
node[i].left = node[i * 2 + 1];
if (i * 2 + 2 < 10)
node[i].right = node[i * 2 + 2];
}
//中序遍历
midOrderRe(node[0]);
}
public static void midOrderRe(TreeNode biTree) {
Stack<TreeNode> stack = new Stack<TreeNode>();
while (biTree != null || !stack.isEmpty()) {
while (biTree != null) {
stack.push(biTree);
biTree = biTree.left;
}
if (!stack.isEmpty()) {
biTree = stack.pop();
System.out.print(biTree.value+" ");
biTree = biTree.right;
}
}
}
}
//节点结构
class TreeNode{
int value;
TreeNode left;
TreeNode right;
TreeNode(int value){
this.value = value;
}
}