📄 bitree.cpp
字号:
// bitree.cpp: implementation of the bitree class.
//
//////////////////////////////////////////////////////////////////////
#include "bitree.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
#include <cstdio>
#include <iostream>
using namespace std;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
BiTree::~BiTree()
{
if(!root)
return ;
else
delete(root);
}
BiTNode *BiTree::LeftChild( BiTNode *p)
{
if(!p)return 0;
else return p->lchild;
}
BiTNode *BiTree::RightChild( BiTNode *p)
{
if(!p)return 0;
else return p->rchild;
}
int BiTree::Depth(BiTNode *p)
{
if(!p) return 0;
int l = Depth(p->lchild);
int r = Depth(p->rchild);
return l>r?l+1:r+1;
}
int BiTree::PreOrderCreatBiTree(BiTNode* &T)
{
Type ch;
cin>>ch;
if(ch== '#')T = NULL;
else{
if( !(T = new BiTNode) )
{
throw "内存不够!"; return 0;
}
T->data = ch;
PreOrderCreatBiTree(T->lchild);
PreOrderCreatBiTree(T->rchild);
}
return 1;
}
void BiTree::PreTraverse(BiTNode* T)
{
if(!T) return;
cout<<T->data;
PreTraverse(T->lchild);
PreTraverse(T->rchild);
}
BiTNode * BiTree::getroot()
{
return root;
}
void BiTree::Insert(BiTNode *T,BiTNode *p,bool left)
{
if(!T||!p)
return ;
BiTNode *q;
if(left)
{
q=p->lchild;
p->lchild=T;
while(T->lchild)
T=T->lchild;
T->lchild=q;
}
else
{
q=p->rchild;
p->rchild=T;
while(T->rchild)
T=T->rchild;
T->rchild=q;
}
}
BiTNode* BiTree::Find(BiTNode *p,Type e,BiTNode *&q)
{
if(!p)
return 0;
else
{
if(p->data==e)
{
cout<<"以找到"<<endl;
q=p;
}
else
{
Find(p->lchild,e,q);
Find(p->rchild,e,q);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -