יוצר: Vendetta
גירסא: 1.0
תיאור: יציג של עץ בינרי במירק
הפעלה:
קוד: בחר הכל
var %x = $binTree(<TEXT>,[BinTreeInleft],[BinTreeInRight])
setlefttree <BinTree> <BinTreeInleft>
setRighttree <BinTree> <BinTreeInRight>
echo -a @ $getFromTree(<BinTree>)
echo -a @ $getFromTree(<BinTree>).info
echo -a @ $getFromTree(<BinTree>).left
echo -a @ $getFromTree(<BinTree>).right
שורה הראשונה - הגדרת משתנה מסוג עץ בינרי
שורה שנייה - הגדרת העץ בבן השמאלי
שורה שלישית - הגדרת העץ בבן שימיני
שורה רביעית/חמישית - החזרת הערך שנימצא באותו עץ
שורה שישית/שביעית - החזרת העץ הימיני/שאמלי
הקוד-
קוד: בחר הכל
alias binTree {
if ($1) {
var %a = $r(1,99999)
hadd -m binTree- $+ %a I $1
if ($2) {
hadd -m binTree- $+ %a L $1
if ($3) {
hadd -m binTree- $+ %a R $1
}
else hadd -m binTree- $+ %a R $Null
}
else hadd -m binTree- $+ %a L $Null
return %a
}
}
alias setlefttree {
if ($hget(binTree- $+ $1)) && ($2) hadd -m binTree- $+ $1 L $2
}
alias setRighttree {
if ($hget(binTree- $+ $1,I)) && ($2) hadd -m binTree- $+ $1 R $2
}
alias getFromTree {
if ($hget(binTree- $+ $1,I)) {
if ($prop = Info) return $hget(binTree- $+ $1,I)
if ($prop = Left) return $hget(binTree- $+ $1,L)
if ($prop = Right) return $hget(binTree- $+ $1,R)
return $hget(binTree- $+ $1,I)
}
}
וכמובן דוגמה -
מבנה העץ שיצרתי
קוד: בחר הכל
1---------------------------lol
2----------lol.1.1 lol.1.2
3-----NULL lol.2.1 NULL lol.2.2
4--NULL NULL lol.3.1 NULL NULL NULL NULL lol.3.2
יצירת העץ -
קוד: בחר הכל
alias checktree {
var %x = $binTree(lol)
var %y1 = $binTree(lol.1.1)
var %y2 = $binTree(lol.1.2)
var %z1 = $binTree(lol.2.1)
var %z2 = $binTree(lol.2.2)
var %d1 = $binTree(lol.3.1)
var %d2 = $binTree(lol.3.2)
setlefttree %x %y1
setRighttree %x %y2
setRighttree %y1 %z1
setRighttree %y2 %z2
setlefttree %y1 %d1
setRighttree %y2 %d2
}
הכמובן - רקורסייה להצגת כל הערכים בעץ
קוד: בחר הכל
alias FondTheLastLevel {
if ($getFromTree($1)) {
echo -a @ $getFromTree($1).info
.timer 1 0 FondTheLastLevel $getFromTree($1).left
.timer 1 0 FondTheLastLevel $getFromTree($1).right
}
}
כל הקוד ביחד -
קוד: בחר הכל
1---------------------------lol
2----------lol.1.1 lol.1.2
3-----NULL lol.2.1 NULL lol.2.2
4--NULL NULL lol.3.1 NULL NULL NULL NULL lol.3.2
alias checktree {
var %x = $binTree(lol)
var %y1 = $binTree(lol.1.1)
var %y2 = $binTree(lol.1.2)
var %z1 = $binTree(lol.2.1)
var %z2 = $binTree(lol.2.2)
var %d1 = $binTree(lol.3.1)
var %d2 = $binTree(lol.3.2)
setlefttree %x %y1
setRighttree %x %y2
setRighttree %y1 %z1
setRighttree %y2 %z2
setlefttree %y1 %d1
setRighttree %y2 %d2
FondTheLastLevel %x
}
alias FondTheLastLevel {
if ($getFromTree($1)) {
echo -a @ $getFromTree($1).info
.timer 1 0 FondTheLastLevel $getFromTree($1).left
.timer 1 0 FondTheLastLevel $getFromTree($1).right
}
}