📄 bitree.cpp
字号:
// bitree.cpp: implementation of the bitree class.
//
//////////////////////////////////////////////////////////////////////
#include "bitree.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
BiTree::BiTree( )
{
root=0;
}
BiTree::BiTree(BiTNode* lch,BiTNode* rch,Type item )
{
BiTNode* p;
if(root==0)
{
root=p;
p->lchild=lch;
p->rchild=rch;
p->data=item;
}
else
{
root->lchild=lch;
root->rchild=rch;
root->data=item;
}
}
BiTNode* BiTree::GetRoot( )const
{
return root;
}
BiTNode* BiTree::Parent( BiTNode *p)
{
return root;
}
BiTNode* BiTree::LeftChild( BiTNode *p)
{
return p->lchild;
}
BiTNode* BiTree::RightChild( BiTNode *p )
{
return p->rchild;
}
int BiTree::Depth(BiTNode *p)
{
if(!p)
return 0;
else
{
int i,j;
i=Depth(p->lchild);
j=Depth(p->rchild);
return i>j?i+1:j+1;
}
}
void BiTree::PreOrderCreateBiTree(BiTNode * &T)
{
char ch;
ch=getchar();
if(ch=='#');
else
{
T=(BiTNode*)malloc(sizeof(BiTNode));
T->lchild=T->rchild=0;
T->data=ch;
PreOrderCreateBiTree(T->lchild);
PreOrderCreateBiTree(T->rchild);
}
}
void BiTree::PrintBiTree(BiTNode *T)
{
if(!T);
else
{
cout<<T->data;
PrintBiTree(T->lchild);
PrintBiTree(T->rchild);
}
}
void BiTree::InOrdertraverse(BiTNode *T)
{
if(!T);
else
{
InOrdertraverse(T->lchild);
cout<<T->data;
InOrdertraverse(T->rchild);
}
}
BiTNode* BiTree::FatherNode(BiTNode* L,BiTNode* f,Type e)
{
if(!L);
else if(L->data==e)
{
printf("(%c)",f->data);
return f;
}
else
{
FatherNode(L->lchild,L,e);
FatherNode(L->rchild,L,e);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -