爪哇2博客
爪哇2博客

爪哇中的二叉树预排序遍历

如果您想练习数据结构和算法程序,可以通过 前100多个数据结构和算法面试问题.

这是Java二叉树教程的第二部分。

在这篇文章中,我们将看到有关PreOrder的信息 二叉树 爪哇中的遍历。

预购遍历:

在PreOrder遍历中,每个节点都在其子树中的任何一个之前被处理。换句话说,在每个节点的子树之前进行访问。
预购遍历的步骤为:
  • Visit 节点。
  • Traverse the 剩下 subtree in PreOrder.
  • Traverse the 对 subtree in PreOrder.

有两种实现方式

  • 递归的
  • 迭代式

递归解决方案:
递归解决方案非常简单,下图将使您更好地理解递归。


递归代码将是:

1
2
3
4
5
6
7
8
9
10
 
上市 虚空 预购(树节点 ) {
    如果( !=   空值) {
   //通过打印节点数据来访问节点  
      系统..打印(“%d”,.数据);
      预购(.剩下);
      预购(.);
    }
  }
 

迭代解决方案:
对于递归,我们使用隐式堆栈。因此,这里将递归解决方案转换为迭代解决方案,我们将使用显式堆栈。
迭代解决方案的步骤:

  1. Create 空的 and pust 根 node to it.
  2. Do the following when is not 空的
    • Pop a node from and print it
    • Push 对 child of 流行音乐ped node to
    • Push 剩下 child of 流行音乐ped node to 叠

我们首先推送右子级,因此它将在左子树之后处理,因为Stack是LIFO。

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
 
上市 虚空 预购Iter(树节点 ) {
 
         如果( == 空值)
             返回;
 
         叠放<树节点> = 叠放<树节点>();
         .();
 
         (!.空的()){
 
             树节点 n = .流行音乐();
             系统..打印(“%d”,n.数据);
 
             如果(n. != 空值){
                 .(n.);
             }
             如果(n.剩下 != 空值){
                 .(n.剩下);
             }
 
         }
 
     }
 

例:
假设您的二叉树是:

让我们创建用于PreOrder遍历的Java程序:

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
 
组织.Arpit.爪哇2blog.二叉树;
 
进口 爪哇.实用程序.叠放;
 
上市 BinaryTreePreOrder {
 
    上市 静态的 树节点
    {
        整型 数据;
        树节点 剩下;
        树节点 ;
        树节点(整型 数据)
        {
            这个.数据=数据;
        }
    }
 
    //递归解决方案
    上市 虚空 预购(树节点 ) {
        如果( !=   空值) {
            //访问节点-打印节点数据  
            系统..打印(“%d”,.数据);
            预购(.剩下);
            预购(.);
        }
    }
 
    //迭代解决方案
    上市 虚空 预购Iter(树节点 ) {
 
        如果( == 空值)
            返回;
 
        叠放<树节点> = 叠放<树节点>();
        .();
 
        (!.空的()){
 
            树节点 n = .流行音乐();
            系统..打印(“%d”,n.数据);
 
            如果(n. != 空值){
                .(n.);
            }
            如果(n.剩下 != 空值){
                .(n.剩下);
            }
 
        }
 
    }
 
    上市 静态的 虚空 主要([] args)
    {
        BinaryTreePreOrder = BinaryTreePreOrder();
        //创建一个二叉树
        树节点 根节点=createBinaryTree();
        系统..打印(“使用递归解决方案:”);
 
        .预购(根节点);
 
        系统..打印();
        系统..打印(“ -------------------------”);
        系统..打印(“使用迭代解决方案:”);
 
        .预购Iter(根节点);
    }
 
    上市 静态的 树节点 createBinaryTree()
    {
 
        树节点 根节点 = 树节点(40);
        树节点 node20= 树节点(20);
        树节点 node10= 树节点(10);
        树节点 node30= 树节点(30);
        树节点 node60= 树节点(60);
        树节点 node50= 树节点(50);
        树节点 node70= 树节点(70);
 
        根节点.剩下=node20;
        根节点.=node60;
 
        node20.剩下=node10;
        node20.=node30;
 
        node60.剩下=node50;
        node60.=node70;
 
        返回 根节点;
    }
}
 

运行上面的程序,您将获得以下输出:

使用递归解决方案:
40 20 10 30 60 50 70
————————-
使用迭代解决方案:
40 20 10 30 60 50 70

爪哇 Binary树教程:

请通过 爪哇面试程序 有关更多此类程序。

导入联系人

您可能还喜欢:

分享这个

作者

关注作者

相关文章

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

订阅我们的新闻

获取质量教程到您的收件箱。现在订阅。


成为朋友

©2020 爪哇2博客