二叉树的先序遍历 递归与非递归实现

先序遍历 :

通俗来讲,就是先打印父节点,然后打印左孩子节点 ,最后打印右孩子节点

举个例子:2 3 分别是 节点1的左右孩子  4 5 分别是节点2 的左右孩子  6 7是节点3的左右孩子

      1

  2       3

 4    5   6   7

先序的遍历的结果为  1  2 4 5 3 6 7

递归代码实现:

1
2
3
4
5
6
7
8
public static void preOrderRecur(Node head) {
  if (head == null) {
    return;
  }
  System.out.print(head.value + " ");
  preOrderRecur(head.left);
  preOrderRecur(head.right);
}

 非递归代码实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static void preOrderUnRecur(Node head) {
    System.out.print("pre-order: ");
    if (head != null) {
        Stack<Node> stack = new Stack<Node>();
        stack.add(head);
        while (!stack.isEmpty()) {
            head = stack.pop();
            System.out.print(head.value + " ");
            if (head.right != null) {
                stack.push(head.right);
            }
            if (head.left != null) {
                stack.push(head.left);
            }
        }
    }
    System.out.println();
}

 

posted on   机器猫007  阅读(67)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示