二叉树的结点定义概论
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
BiTreeNode *InsertRightNode(BiTreeNode *curr,DataType x) {
BiTreeNode *s,*t; if(curr==NULL) return NULL; t=curr->rightChild;/*保存原curr所指结点的右子树指针*/ s=(BiTreeNode *)malloc(sizeof(BiTreeNode)); s->data=x; s->rightChild=t;/*新插入结点的左子树为原curr的右子树*/ s->leftChild=NULL; curr->rightChild=s;/*新结点成为curr的右子树*/ return curr->rightChild;/*返回新插入结点的指针*/ }
s->leftChild=t;/*新插入结点的左子树为原curr的左子树*/ s->rightChild=NULL;
curr->leftChild=s;/*新结点成为curr的左子树*/ return curr->leftChild;/*返回新插入结点的指针*/ }
/*若当前结点curr非空,在curr的右子树插入元素值为x的新结点*/ /*原curr所指结点的右子树成为新插入结点的右子树*/ /*若插入成功返回新插入结点的指针,否则返回空指针*/
BiTreeNode *InsertLeftNode(BiTreeNode *curr,DataType x) {
BiTreeNode *s,*t;
if(curr==NULL) return NULL;
t=curr->leftChild;/*保存原curr所指结点的左子树指针*/ s=(BiTreeNode *)malloc(sizeof(BiTreeNode)); s->data=x;
/*若curr非空,删除curr所指结点的左子树*/
/*若删除成功返回删除结点的双亲结点指针,否则返回空 指针*/
BiTreeNode *DeleteLeftTree(BiTreeNode *curr)
{
if(curr==NULL||curr->leftChild==NULL) return NULL;
curr->leftChild=NULL; return curr; }
/*若curr非空,删除curr所指结点的右子树*/ /*若删除成功返回删除结点的双亲结点指针,否则返回空指针*/
BiTreeNode *DeleteRightTree(BiTreeNode *curr)
{
if(curr==NULL||curr->rightChild==NULL) return NULL;
curr->righttChild=NULL; return curr; }
释放内存空间 BiTreeNode *DeleteRightTree(BiTreeNode *curr) {
if(curr==NULL||curr->rightChild==NULL) return NULL;
curr->rightChild=NULL; return curr; }
typedef struct Node
二叉树的ຫໍສະໝຸດ Baidu点定义
{
DataType data;/*数据域 */
struct Node *leftChild;/*左子树指针*/
struct Node *rightChild;/*右子树指针*/
}BiTreeNode;/*结点的结构体定义*/
初始化操作
void Initiate(BiTreeNode **root) {
*root=(BiTreeNode*)malloc(sizeof(BiTreeNode)); (*root)->leftChild=NULL; (*root)->rightChild=NULL; }
/*若当前结点curr为空,在curr的左子树插入元素值为x的新结点*/ /*原curr所指结点的左子树成为新插入结点的左子树*/ /*若插入成功则返回新插入结点的指针,否则返回空指针*/
BiTreeNode *s,*t; if(curr==NULL) return NULL; t=curr->rightChild;/*保存原curr所指结点的右子树指针*/ s=(BiTreeNode *)malloc(sizeof(BiTreeNode)); s->data=x; s->rightChild=t;/*新插入结点的左子树为原curr的右子树*/ s->leftChild=NULL; curr->rightChild=s;/*新结点成为curr的右子树*/ return curr->rightChild;/*返回新插入结点的指针*/ }
s->leftChild=t;/*新插入结点的左子树为原curr的左子树*/ s->rightChild=NULL;
curr->leftChild=s;/*新结点成为curr的左子树*/ return curr->leftChild;/*返回新插入结点的指针*/ }
/*若当前结点curr非空,在curr的右子树插入元素值为x的新结点*/ /*原curr所指结点的右子树成为新插入结点的右子树*/ /*若插入成功返回新插入结点的指针,否则返回空指针*/
BiTreeNode *InsertLeftNode(BiTreeNode *curr,DataType x) {
BiTreeNode *s,*t;
if(curr==NULL) return NULL;
t=curr->leftChild;/*保存原curr所指结点的左子树指针*/ s=(BiTreeNode *)malloc(sizeof(BiTreeNode)); s->data=x;
/*若curr非空,删除curr所指结点的左子树*/
/*若删除成功返回删除结点的双亲结点指针,否则返回空 指针*/
BiTreeNode *DeleteLeftTree(BiTreeNode *curr)
{
if(curr==NULL||curr->leftChild==NULL) return NULL;
curr->leftChild=NULL; return curr; }
/*若curr非空,删除curr所指结点的右子树*/ /*若删除成功返回删除结点的双亲结点指针,否则返回空指针*/
BiTreeNode *DeleteRightTree(BiTreeNode *curr)
{
if(curr==NULL||curr->rightChild==NULL) return NULL;
curr->righttChild=NULL; return curr; }
释放内存空间 BiTreeNode *DeleteRightTree(BiTreeNode *curr) {
if(curr==NULL||curr->rightChild==NULL) return NULL;
curr->rightChild=NULL; return curr; }
typedef struct Node
二叉树的ຫໍສະໝຸດ Baidu点定义
{
DataType data;/*数据域 */
struct Node *leftChild;/*左子树指针*/
struct Node *rightChild;/*右子树指针*/
}BiTreeNode;/*结点的结构体定义*/
初始化操作
void Initiate(BiTreeNode **root) {
*root=(BiTreeNode*)malloc(sizeof(BiTreeNode)); (*root)->leftChild=NULL; (*root)->rightChild=NULL; }
/*若当前结点curr为空,在curr的左子树插入元素值为x的新结点*/ /*原curr所指结点的左子树成为新插入结点的左子树*/ /*若插入成功则返回新插入结点的指针,否则返回空指针*/