爪哇2博客
爪哇2博客

爪哇中二叉树的垂直和

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

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

在本文中,我们将看到如何在Java中打印二叉树节点的垂直和。下图将显示二叉树的垂直和。

算法:

打印二叉树的垂直和的步骤:
  • 遍历树 有序遍历。
  • 创建一个变量级别并将其初始化为0。遍历左子级时,将级别降低1(级别–),然后遍历正确的孩子时,将级别提高1(level ++)。
  • 我们需要保持 树状图作为关卡 值作为节点数据。如果再次获得相同的键(级别),则需要将当前节点数据添加到先前存储的值中以计算总和。
    例如:
    树状图的条目带有(0,40),其中0是级别,40是节点数据。因此,在遍历时,如果在级别0遇到节点30,则在处理节点30之后,TreeMap的条目将为(0,70)
  • 迭代所有节点后填充TreeMap后,请打印结果。

递归代码将是:

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
 
//打印二叉树的垂直和
上市 静态的 虚空 printVertivalSumOfBinaryTree(树节点 startNode,树状图<整数,整数> 树NodeMap,整型 水平) {
如果(startNode==空值)
{
返回;
}
 
//迭代左孩子时将级别降低1
printVertivalSumOfBinaryTree(startNode.剩下,树NodeMap,水平-1);
 
如果(树NodeMap.得到(水平)!=空值)
{
整数 =树NodeMap.得到(水平)+startNode.数据;
//将当前节点数据添加到先前的存储值中以获得总和
树NodeMap.(水平, );
}
其他
{
 
树NodeMap.(水平, startNode.数据);
}
//迭代左孩子时将级别增加1
printVertivalSumOfBinaryTree(startNode.,树NodeMap,水平+1);
 
}
 

请在下面的图表中找到为每个二叉树节点分配的级别。

例:

让我们创建一个用于在二进制树中打印垂直和的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
 
组织.Arpit.爪哇2blog.二叉树;
 
进口 爪哇.实用程序.地图.条目;
进口 爪哇.实用程序.树状图;
 
上市 BinaryTreeVerticalSumMain {
 
 
上市 静态的 树节点
{
整型 数据;
树节点 剩下;
树节点 ;
树节点(整型 数据)
{
这个.数据=数据;
}
}
 
//打印二叉树的垂直和
上市 静态的 虚空 printVertivalSumOfBinaryTree(树节点 startNode,树状图<整数,整数> 树NodeMap,整型 水平) {
如果(startNode==空值)
{
返回;
}
 
//迭代左孩子时将级别降低1
printVertivalSumOfBinaryTree(startNode.剩下,树NodeMap,水平-1);
 
如果(树NodeMap.得到(水平)!=空值)
{
整数 =树NodeMap.得到(水平)+startNode.数据;
//将当前节点数据添加到先前的存储值中以获得总和
树NodeMap.(水平, );
}
其他
{
 
树NodeMap.(水平, startNode.数据);
}
//迭代左孩子时将级别增加1
printVertivalSumOfBinaryTree(startNode.,树NodeMap,水平+1);
 
}
上市 静态的 虚空 主要([] args)
{
//创建一个二叉树
树节点 根节点=createBinaryTree();
系统..打印(“二叉树的垂直和为:”);
树状图<整数,整数> 树NodeMap= 树状图<整数,整数>();
printVertivalSumOfBinaryTree(根节点, 树NodeMap, 0);
 
对于(条目<整数,整数> 条目:树NodeMap.条目Set())
系统..打印(条目.得到Value());
}
 
上市 静态的 树节点 createBinaryTree()
{
 
树节点 根节点 = 树节点(40);
树节点 node20= 树节点(20);
树节点 node10= 树节点(10);
树节点 node30= 树节点(30);
树节点 node60= 树节点(60);
树节点 node50= 树节点(50);
树节点 node70= 树节点(70);
树节点 node55= 树节点(55);
树节点 node5= 树节点(5);
 
根节点.剩下=node20;
根节点.=node60;
 
node20.剩下=node10;
node20.=node30;
 
node60.剩下=node50;
node60.=node70;
node50.=node55;
node30.剩下=node5;
返回 根节点;
}
}
 

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

1
2
3
4
5
6
7
8
 
垂直 二元 :
10
25
120
115
70
 

爪哇 Binary树教程:


导入联系人

您可能还喜欢:

分享这个

作者

关注作者

相关文章

发表评论

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

订阅我们的新闻

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


成为朋友

©2020 爪哇2博客