Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
47
Task/Tree-traversal/E/tree-traversal.e
Normal file
47
Task/Tree-traversal/E/tree-traversal.e
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
def btree := [1, [2, [4, [7, null, null],
|
||||
null],
|
||||
[5, null, null]],
|
||||
[3, [6, [8, null, null],
|
||||
[9, null, null]],
|
||||
null]]
|
||||
|
||||
def backtrackingOrder(node, pre, mid, post) {
|
||||
switch (node) {
|
||||
match ==null {}
|
||||
match [value, left, right] {
|
||||
pre(value)
|
||||
backtrackingOrder(left, pre, mid, post)
|
||||
mid(value)
|
||||
backtrackingOrder(right, pre, mid, post)
|
||||
post(value)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def levelOrder(root, func) {
|
||||
var level := [root].diverge()
|
||||
while (level.size() > 0) {
|
||||
for node in level.removeRun(0) {
|
||||
switch (node) {
|
||||
match ==null {}
|
||||
match [value, left, right] {
|
||||
func(value)
|
||||
level.push(left)
|
||||
level.push(right)
|
||||
} } } } }
|
||||
|
||||
print("preorder: ")
|
||||
backtrackingOrder(btree, fn v { print(" ", v) }, fn _ {}, fn _ {})
|
||||
println()
|
||||
|
||||
print("inorder: ")
|
||||
backtrackingOrder(btree, fn _ {}, fn v { print(" ", v) }, fn _ {})
|
||||
println()
|
||||
|
||||
print("postorder: ")
|
||||
backtrackingOrder(btree, fn _ {}, fn _ {}, fn v { print(" ", v) })
|
||||
println()
|
||||
|
||||
print("level-order:")
|
||||
levelOrder(btree, fn v { print(" ", v) })
|
||||
println()
|
||||
Loading…
Add table
Add a link
Reference in a new issue