Skip to content

Commit 7ef3573

Browse files
ClémentClément
authored andcommitted
Minor, traversal order explained.
1 parent 42c9de7 commit 7ef3573

3 files changed

Lines changed: 69 additions & 58 deletions

File tree

source/code/projects/Tree/Tree/BSTree.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ private bool Delete(T dataP, ref Node nodeP)
5757
{
5858
nodeP.Data = FindMin(nodeP.right);
5959
Delete(nodeP.Data, ref nodeP.right);
60+
// Or we could replace with the largest
61+
// value in the left subtree.
6062
}
6163
else
6264
{

source/code/projects/Tree/Tree/BTree.cs

Lines changed: 60 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -112,81 +112,83 @@ private bool Find(Node nodeP, T dataP)
112112

113113
// Done with finding.
114114

115-
public abstract void Insert(T dataP);
116-
public abstract bool Delete(T dataP);
117-
118-
/* Traversal methods. */
119-
// Inorder traversal
120-
// "Left, root, right"
121-
public string TrasverseI()
122-
{
123-
string returned = "";
124-
if (root != null)
115+
/* Traversal methods. */
116+
// Inorder traversal
117+
// "Left, root, right"
118+
public string TrasverseI()
125119
{
126-
returned += TraverseI(root);
120+
string returned = "";
121+
if (root != null)
122+
{
123+
returned += TraverseI(root);
124+
}
125+
return returned;
127126
}
128-
return returned;
129-
}
130127

131-
private string TraverseI(Node nodeP)
132-
{
133-
string returned = "";
134-
if (nodeP != null)
128+
private string TraverseI(Node nodeP)
135129
{
136-
returned += TraverseI(nodeP.left);
137-
returned += nodeP.Data + " ";
138-
returned += TraverseI(nodeP.right);
130+
string returned = "";
131+
if (nodeP != null)
132+
{
133+
returned += TraverseI(nodeP.left);
134+
returned += nodeP.Data + " ";
135+
returned += TraverseI(nodeP.right);
136+
}
137+
return returned;
139138
}
140-
return returned;
141-
}
142139

143-
// Preorder traversal
144-
// "Root, left, right"
145-
public string TrasversePr()
146-
{
147-
string returned = "";
148-
if (root != null)
140+
// Preorder traversal
141+
// "Root, left, right"
142+
public string TrasversePr()
149143
{
150-
returned += TraversePr(root);
144+
string returned = "";
145+
if (root != null)
146+
{
147+
returned += TraversePr(root);
148+
}
149+
return returned;
151150
}
152-
return returned;
153-
}
154151

155-
private string TraversePr(Node nodeP)
156-
{
157-
string returned = "";
158-
if (nodeP != null)
152+
private string TraversePr(Node nodeP)
159153
{
160-
returned += nodeP.Data + " ";
161-
returned += TraversePr(nodeP.left);
162-
returned += TraversePr(nodeP.right);
154+
string returned = "";
155+
if (nodeP != null)
156+
{
157+
returned += nodeP.Data + " ";
158+
returned += TraversePr(nodeP.left);
159+
returned += TraversePr(nodeP.right);
160+
}
161+
return returned;
163162
}
164-
return returned;
165-
}
166163

167-
// Postorder traversal
168-
// "Left, right, root"
169-
public string TrasversePo()
170-
{
171-
string returned = "";
172-
if (root != null)
164+
// Postorder traversal
165+
// "Left, right, root"
166+
public string TrasversePo()
173167
{
174-
returned += TraversePo(root);
168+
string returned = "";
169+
if (root != null)
170+
{
171+
returned += TraversePo(root);
172+
}
173+
return returned;
175174
}
176-
return returned;
177-
}
178175

179-
private string TraversePo(Node nodeP)
180-
{
181-
string returned = "";
182-
if (nodeP != null)
176+
private string TraversePo(Node nodeP)
183177
{
184-
returned += TraversePo(nodeP.left);
185-
returned += TraversePo(nodeP.right);
186-
returned += nodeP.Data + " ";
178+
string returned = "";
179+
if (nodeP != null)
180+
{
181+
returned += TraversePo(nodeP.left);
182+
returned += TraversePo(nodeP.right);
183+
returned += nodeP.Data + " ";
184+
}
185+
return returned;
187186
}
188-
return returned;
189-
}
187+
188+
public abstract void Insert(T dataP);
189+
public abstract bool Delete(T dataP);
190+
191+
190192

191193

192194
// The ToString method is simply here to help debug.

source/lectures/data/trees.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,13 @@ Etc., etc. Hence, we get:
9292

9393
#### Displaying Trees
9494

95+
There are essentially three ways of "linearizing" a tree (that is, listing its value as a list):
96+
97+
```{download="./code/projects/Tree.zip"}
98+
!include`snippetStart="/* Traversal methods. */", snippetEnd="/* Done with traversal methods. */"` code/projects/Tree/Tree/BTree.cs
99+
```
100+
101+
95102
#### Implementation Detail
96103

97104
We implemented the binary tree class abstractly, because two methods are still missing: how to insert a value, and how to delete a value (we will add them later on).

0 commit comments

Comments
 (0)