導航:首頁 > 編程語言 > c線索二叉樹代碼

c線索二叉樹代碼

發布時間:2023-06-03 15:59:57

① 求c語言數據結構二叉樹的建樹,前序遍歷,輸出樹的代碼,能用採納。

#include
#include
#define MAXSIZE 100 //二叉樹中最多的結點數
typedef char TElemType;
typedef struct BiTNode
{
TElemType data;

BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
//定義函數指針
typedef void(* Visit)(BiTree);
//二叉樹的初始化
void Init_BiTree(BiTree *T)
{
*T = NULL;
}
//判斷二叉樹是否為空,返回1
int IsEmpty_BiTree(BiTree *T)
{

return *T == NULL;
}
//創建二叉樹
void Create_BiTree(BiTree *T)
{
char ch;
ch = getchar();
//當輸入的是"#"時,認為該子樹為空

if(ch == '#')

*T = NULL;
//創建樹結點
else{

*T = (BiTree)malloc(sizeof(BiTNode));

(*T)->data = ch; //生成樹結點
//生成左子樹
Create_BiTree(&(*T)->lchild);

//生成右子樹
Create_BiTree(&(*T)->rchild);

}
}
//輸出結點的值
void Print_BiTreeNode(BiTree T)
{
printf("%c\t",T->data);

}
//先序遍歷二叉樹
void PreOrder_BiTree(BiTree T,Visit visit)
{
if(!IsEmpty_BiTree(&T))
{
visit(T);

PreOrder_BiTree(T->lchild,visit);
PreOrder_BiTree(T->rchild,visit);

}
}
int main(){
BiTree T;
//將二叉樹初始為一個空的二叉樹
Init_BiTree(&T);
//創建二叉樹
Create_BiTree(&T);
//先序遍歷
printf("\n先序遍歷結果:");
PreOrder_BiTree(T,Print_BiTreeNode);
return 0;
}

② 請問C語言如何創建二叉樹

創建二叉樹的源程序如下:

#include <cstdlib>

#include <stdio.h>

typedef struct node

{ //樹的結點

int data;

struct node* left;

struct node* right;

} Node;

typedef struct

{ //樹根

Node* root;

} Tree;

void insert(Tree* tree, int value)//創建樹

{

Node* node=(Node*)malloc(sizeof(Node));//創建一個節點

node->data = value;

node->left = NULL;

node->right = NULL;

if (tree->root == NULL)//判斷樹是不是空樹

{

tree->root = node;

}

else

{//不是空樹

Node* temp = tree->root;//從樹根開始

while (temp != NULL)

{

if (value < temp->data)//小於就進左兒子

{

if (temp->left == NULL)

{

temp->left = node;

return;

}

else

{//繼續判斷

temp = temp->left;

}

}

else {//否則進右兒子

if (temp->right == NULL)

{

temp->right = node;

return;

}

else {//繼續判斷

temp = temp->right;

}

}

}

}

return;

}

void inorder(Node* node)//樹的中序遍歷

{

if (node != NULL)

{

inorder(node->left);

printf("%d ",node->data);

inorder(node->right);

}

}

int main()

{

Tree tree;

tree.root = NULL;//創建一個空樹

int n;

scanf("%d",&n);

for (int i = 0; i < n; i++)//輸入n個數並創建這個樹

{

int temp;

scanf("%d",&temp);

insert(&tree, temp);

}

inorder(tree.root);//中序遍歷

getchar();

getchar();

return 0;

}


(2)c線索二叉樹代碼擴展閱讀:

簡單二叉樹定義範例:此樹的順序結構為:ABCDE

#include <cstdlib>

#include <stdio.h>

#include <string>

int main()

{

node* p = newnode;

node* p = head;

head = p;

string str;

cin >> str;

creat(p, str, 0)//默認根結點在str下標0的位置

return 0;

}

//p為樹的根結點(已開辟動態內存),str為二叉樹的順序存儲數組ABCD##E或其他順序存儲數組,r當前結點所在順序存儲數組位置

void creat(node* p, string str, int r)

{

p->data = str[r];

if (str[r * 2 + 1] == '#' || r * 2 + 1 > str.size() - 1)p->lch = NULL;

else

{

p->lch = newnode;

creat(p->lch, str, r * 2 + 1);

}

if (str[r * 2 + 2] == '#' || r * 2 + 2 > str.size() - 1)p->rch = NULL;

else

{

p->rch = newnode;

creat(p->rch, str, r * 2 + 2);

}

}

③ 二叉樹c語言實現

#include<iostream.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
char data;
struct node *lchild,*rchild;//
}BiTNode,*BiTree;
void CreatBiTree(BiTree &T)
{
char ch;
ch=getchar();
if (ch == ' ')
T = 0;
else {
T=(BiTNode*)malloc(sizeof(BiTNode));
T->data=ch;//生成根節點
CreatBiTree(T->lchild);//構造左子樹
CreatBiTree(T->rchild);//構造右子樹
}
}
void preorder(BiTree T)//前序遍歷
{
if (T!=NULL){
printf ("%c",T->data);
preorder(T->lchild);
preorder(T->rchild);
}
}
void inorder(BiTree T)//中序遍歷
{
if (T!=NULL){
inorder(T->lchild);
printf ("%c",T->data);
inorder(T->rchild);
}
}
void postorder(BiTree T)//後序遍歷
{
if (T!=NULL){
postorder(T->lchild);
postorder(T->rchild);
printf ("%c",T->data);
}
}
void main ()
{
cout<<"請輸入要創建的二叉樹包括空格:"<<endl ;
BiTree T;
CreatBiTree(T);//創建二叉樹
cout<<"前序遍歷的結果為:"<<endl;
preorder(T);
cout<<endl;
cout<<"中序遍歷的結果為:"<<endl;
inorder(T);
cout<<endl;
cout<<"後序遍歷的結果為:"<<endl;
postorder(T);
}

閱讀全文

與c線索二叉樹代碼相關的資料

熱點內容
怎麼刪除qq雲端文件 瀏覽:311
閃電新聞是什麼app 瀏覽:893
網路管理條例有哪些 瀏覽:765
嘀嗒app如何 瀏覽:289
win1015014下一版本 瀏覽:195
太原市開放了哪些網站 瀏覽:575
網路沒有欠費可為什麼網路用不到 瀏覽:173
福建電信升級光纖 瀏覽:13
如何在銀行app上查詢徵信 瀏覽:629
少兒編程課哪裡好 瀏覽:636
蘋果手機維修店濟南 瀏覽:754
lync怎麼修改密碼 瀏覽:294
ae文件ps增加圖層 瀏覽:899
網路寫作高手有哪些 瀏覽:265
空間留言代碼心形 瀏覽:272
蘋果手機軟體怎麼信任 瀏覽:308
編程到哪裡學比較好 瀏覽:317
有關網路設備的罪名有哪些 瀏覽:683
手機文件莫名丟失 瀏覽:497
支援程序 瀏覽:735

友情鏈接