中序遍历(LDR)是 二叉树遍历的一种,也叫做 中根遍历、中序周游。在二叉树中,先左后根再右。巧记:左根右。
    中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树
    二叉树为空则结束返回,
    否则:
    (1)中序遍历左子树
    (2)访问根结点
    (3)中序遍历右子树
    如图所示
    中序遍历 - 图1
    中序遍历结果:DBEAFC

    1. import java.util.Stack;
    2. public class Test {
    3. public static void main(String[] args) {
    4. TreeNode[] node = new TreeNode[10];
    5. for (int i = 0; i < 10; i++) {
    6. node[i] = new TreeNode(i);
    7. }
    8. for (int i = 0; i < 10; i++) {
    9. if (i * 2 + 1 < 10)
    10. node[i].left = node[i * 2 + 1];
    11. if (i * 2 + 2 < 10)
    12. node[i].right = node[i * 2 + 2];
    13. }
    14. //中序遍历
    15. midOrderRe(node[0]);
    16. }
    17. public static void midOrderRe(TreeNode biTree) {
    18. Stack<TreeNode> stack = new Stack<TreeNode>();
    19. while (biTree != null || !stack.isEmpty()) {
    20. while (biTree != null) {
    21. stack.push(biTree);
    22. biTree = biTree.left;
    23. }
    24. if (!stack.isEmpty()) {
    25. biTree = stack.pop();
    26. System.out.print(biTree.value+" ");
    27. biTree = biTree.right;
    28. }
    29. }
    30. }
    31. }
    32. //节点结构
    33. class TreeNode{
    34. int value;
    35. TreeNode left;
    36. TreeNode right;
    37. TreeNode(int value){
    38. this.value = value;
    39. }
    40. }