Professional Documents
Culture Documents
Auditoriski 6 Stebla 1
Auditoriski 6 Stebla 1
Auditoriski 6 Stebla 1
, ,
,
. ,
, .
n1, n2,...nk, ni-1 ni, i [2,k]
ni ni-1
: , B, K, E, F.
.
: H, M.
() (
) .
: , B, 2.
e
.
: 3.
.
: 2.
() ,
. .
: K, L, F, G, M, I J
B, C, D, E H
- (
,
. .)
- ( ),
.
, ,
.
.
.
-
:
a i 2 i-1, i1.
a k 2k-1, k 1.
3 :
INORDER
PREORDER
POSTORDER
LOD
OLD
LDO
(, , )
(, , )
(, , )
publicclassBinaryTree{
privateNoderoot;
publicvoidBinaryTree(){
root=null;
}
}
privatestaticclassNode{
Nodeleft;
Noderight;
intdata;
Node(intnewData){
left=null;
right=null;
data=newData;
}
}
1
preorder inorder ,
.
inorder postorder , preorder postorder.
:
OLD
LOD
LDO
preorder
inorder
postorder
ABCDEFGHIJKL
DCBEAGHFJILK
DCEBHGJLKIFA
1. preorder inorder:
K A. A inorder . A inorder
. preorder
.
. ( )
( ):
preorder: BCDE - B
Inorder: DCBE - DC
Prorder: CD
Inorder: DC - D C
( ):
preorder: FGHIJKL
inorder: GHFIJLK
preorder: GH IJKL preorder: KL
inorder: GH JILK inorder: LK
o .
2. inorder postorder:
postorder: LDO: DCEBHGJLKIFA - A
,
inorder: LOD: DCBEAGHFJ ILK - inorder
postorder: DCEB
inorder: DCBE
postorder: DC
inorder: DC - D C
.
3. preorder postorder:
. :
a 2.
PREODRER, INORDER POSTORDER .
:
inorder
A*BC^D+E/F
infix
preorder
+-*AB^CD/EF
prefix
postorder
AB*CD^-EF/+
postfix
privatestaticclassNode
{
Nodeleft;
Noderight;
intdata;
Node(intnewData){
left=null;
right=null;
data=newData;
}
}
publicvoidinorder(Nodenode)
{
if(node==null)return;
inorder(node.left);
System.out.print(node.data);
inorder(node.right);
}
publicvoidpreorder(Nodenode)
{
if(node==null)return;
System.out.print(node.data);
preorder(node.left);
preorder(node.right);
}
publicvoidpostorder(Nodenode)
{
if(node==null)return;
postorder(node.left);
postorder(node.right);
System.out.print(node.data);
}
a 3. INORDER
. .
:
publicvoidinorderUsingStack(Nodet){
StackLists=newStackList();//prazenmagacin
Nodep;
p=t;//sepocnuvasopodkoren
while(1){
//odimedokrajvolevanasoka
while(p!=NULL){
//akop!=NULLimalevopodsteblo
s.push(p);
//vomagacinsesmestuvaadresatanap
p=p.left;//odinalevotopodsteblo
}
//akomagacinoteprazen,celotostebloeizminato
if(s.isEmpty())break;
p=s.top;
System.out.print(p.data);
s.pop();
//odinadesnotopodstebloipovtorijaposapkata
//akoimalevopodsteblo
p=p.right;
}
}
a 4.
.
:
publicintinsideNodes(Nodet){
if((t==null)||(t.left==null)&&(t.right==null))
return0;
else
//postorder
return(insideNodes(t.left)+insideNodes(t.right)+1);
}
a 5. .
:
publicintlifes(Nodet){
if(t!=null)
if((t.left==null)&&(t.right==null))
return1;
else
return(lifes(t.left)+lifes(t.right));
else
return0;
}
a 6. ,
.
:
publicintmaxDepth(){
return(maxDepth(root));
}
privateintmaxDepth(Nodenode){
if(node==null){
return(0);
}
else{
intlDepth=maxDepth(node.left);
intrDepth=maxDepth(node.right);
return(Math.max(lDepth,rDepth)+1);
}
}
a 7.
.
. .
:
publicvoidmirror(){
mirror(root);
}
privatevoidmirror(Nodenode){
if(node!=null){
//preslikajgisimericnolevotoidesnotopodsteblo
mirror(node.left);
mirror(node.right);
//smenigipokazuvacitezaovojjazel
Nodetemp=node.left;
node.left=node.right;
node.right=temp;
}
}
null
( ).
n -null : n-1. : 2n,
null :
2n-(n-1)=n+1
NULL
.. .
: inorder
If ptr.left_child e null,
ptr inorder .
If ptr.right_child null,
ptr inorder .
.
privatestaticclassNode{
Nodeleft;
Noderight;
intdata;
charltag,rtag;
Node(intnewData){
left=null;
right=null;
data=newData;
}
}
1 Y = e x .
.
:
p.left e null (
) : p.left = Q, Q
(inorder).
p.ltag=- , P.ltag=+ . (
)
.
2
inorder , inorder .
:
inorder
:CBDAFGE
publicNodepreth(Nodep){
//akonalevoeniska
//smegonasleprethodnikot
if(p.ltag==-)
1. p. returnp->left;
p //inakuodinalevoodp
p=p.left;
.
while(p.rtag==+)//akoevrska
//odinadesnosedodekaimavrski
p=p.right;
//vratigoprethodnikotnap
returnp;
}
p. p
.
publicNodenasled(Nodep){
//akonadesnoeniska
//smegonaslenaslednikot
if(p.rtag==-)
returnp.right;
//inakuodinadesnoodp
p=p.right;
while(p.ltag==+)//akoevrska
//odinalevosedodekaimavrski
p=p.left;
//vratigonaslednikotnap
returnp;
}