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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
funcprot(0);
function[tree]=maketree(x)
tree=zeros(30,1);
for i=1:30
tree(i)=-1;
end
tree(1)=x;
tree(2)=-2;
endfunction
function[tree1]=setleft(tree,tre,x)
tree1=[];
i=1;
while(tree(i)~=-2)
if(tree(i)==tre)
j=i;
end
i=i+1;
end
if(i>2*j)
tree(2*j)=x;
else
tree(2*j)=x;
tree(2*j+1)=-2;
for l=i:2*j-1
tree(i)=-1;
end
end
tree1=tree;
endfunction
function[tree1]=setright(tree,tre,x)
tree1=[];
i=1;
while(tree(i)~=-2)
if(tree(i)==tre)
j=i;
end
i=i+1;
end
if(i>2*j+1)
tree(2*j+1)=x;
else
tree(2*j+1)=x;
tree(2*j+2)=-2;
for l=i:2*j
tree(i)=-1;
end
end
tree1=tree;
endfunction
function[x]=isleft(tree,tre)
i=1;
x=0;
while(tree(i)~=-2)
if(tree(i)==tre)
j=i;
end
i=i+1;
end
if(i>=2*j)
if((tree(2*j)~=-1)|(tree(2*j)~=-2))
x=1;
return 1;
else
return 0;
end
else
x=0;
return x;
end
endfunction
function[x]=isright(tree,tre)
i=1;
x=0;
while(tree(i)~=-2)
if(tree(i)==tre)
j=i;
end
i=i+1;
end
if(i>=2*j+1)
if((tree(2*j+1)~=-1)|(tree(2*j+1)~=-2))
x=1;
return 1;
else
return 0;
end
else
x=0;
return x;
end
endfunction
//Calling Routine:
tree=maketree(3);
disp(tree,"Tree made");
tree=setleft(tree,3,1);
disp(tree,"After setting 1 to left of 3");
tree=setright(tree,3,2);
disp(tree,"After setting 2 to right of 3");
tree=setright(tree,2,4);
tree=setleft(tree,2,5);
tree=setright(tree,1,6);
tree=setright(tree,5,8);
disp(tree,"After above operations:");
x=isright(tree,3);
disp(x,"Checking for the right son of 3 yes if 1 else no");
x=isleft(tree,2);
disp(x,"Check for left son of 2");
|