⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 treestruct.cpp

📁 创建一棵二叉树
💻 CPP
字号:
//define the functions about Tree

#include "stdafx.h"
#include "GlobalDefining.h"
#include "TreeStruct.h"
#include "QueueStruct.h"
#include <iostream.h>
#include <stdlib.h>


extern STATUS InitQueue (SqQueue &Q);  //构造一个空队列
extern STATUS EnQueue (SqQueue &Q, BiTree e);  //插入元素e为Q的新的队尾元素
extern STATUS DeQueue (SqQueue &Q, BiTree &e); //删除Q的队头元素,用e返回其值


//有关BiTree的基本操作包括:
/*
STATUS InitTree(BiTree &T);
void DestroyTree(BiTree &T);
void Insert_SortTree (BiTree &T, int data);
void InOrderTraverse (BiTree &T);
void LevelTraverse (BiTree &T);
*/


STATUS InitTree(BiTree &T)    //初始化二叉树T
{
    T = NULL;
	return OK;
}

void DestroyTree(BiTree &T)   //逐个销毁二叉树T中的每个结点
{	
	if (T == NULL) 
		return; 
	else
	{ 
		DestroyTree(T->lchild); 
		DestroyTree(T->rchild); 
		free(T); 
	}	
}



void Insert_SortTree (BiTree &T, int data)  //二叉排序树的建立
{
	BiTree newT, p, q;
	newT = (BiTree)malloc(sizeof(BiTNode));
	newT->data = data;
	newT->lchild = NULL;
	newT->rchild = NULL;
	if( T == NULL )
		T = newT;
	q = T;                    //q指向树根
	while ( q != NULL )
	{
		p = q;   
		if ( q->data == data )
			return;
		if ( q->data > data )  //p用来记录q的双亲结点
			q = q->lchild;
		else 
			q = q->rchild;
	}
	if ( p->data < data )            //确定newT插入的位置
		p->rchild = newT;
	else 
		p->lchild = newT;
}


void InOrderTraverse (BiTree &T)      //利用递归算法实现中序遍历
{
        if ( T != NULL )
        {   
        	InOrderTraverse (T->lchild);
			cout<<T->data<<" ";
        	InOrderTraverse (T->rchild);
        }
}


void LevelTraverse(BiTree &T)    //实现层次遍历
{
	SqQueue Q;
    InitQueue(Q);
    if(T != NULL)              //将根放入队列
		EnQueue(Q, T);
    BiTree p;
    while ( Q.front != Q.rear )            //当队列非空时
    {
        DeQueue(Q, p);
        cout<<p->data<<" ";         // 从队列取出一个元素并访问
        if(p->lchild != NULL)
			EnQueue(Q, p->lchild);  // 如果该元素有右子树就将它放入队列
        if(p->rchild != NULL)
			EnQueue(Q, p->rchild);  // 如果该元素有左子树就将它放入队列
    }
}




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -