日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

大话数据结构15 : 线索二叉树

發布時間:2023/12/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大话数据结构15 : 线索二叉树 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基礎介紹

線索二叉樹就是當用鏈表組成的二叉樹其在葉節點或者分支中有空指針時,將空指針指向自己的前驅后者后繼

記錄后繼

記錄前驅

線索二叉樹

數據結構

代碼實現

#include "string.h" #include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h"#define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0#define MAXSIZE 100 /* 存儲空間初始分配量 */typedef int Status; /* Status是函數的類型,其值是函數結果狀態代碼,如OK等 */ typedef char TElemType;typedef enum {Link ,Thread}PointerTag;/* Link==0表示指向左右孩子指針, */ /* Thread==1表示指向前驅或后繼的線索 */typedef struct BiThrNode {TElemType data;struct BiThrNode* lchild, * rchild;PointerTag LTag;PointerTag RTag; } *BiThrTree;TElemType Nil = '#'; /* 字符型以空格符為空 */Status visit(TElemType e) {printf("%c ", e);return OK;}/* 按前序輸入二叉線索樹中結點的值,構造二叉線索樹T */ /* 0(整型)/空格(字符型)表示空結點 */ Status CreateBiThrTree(BiThrTree* T) {TElemType h;h = 1;if (h == Nil)*T = NULL;else{T = new BiThrTree();if (!*T)exit(OVERFLOW);(*T)->data = h; /* 生成根結點(前序) */CreateBiThrTree(&(*T)->lchild); /* 遞歸構造左子樹 */if ((*T)->lchild) /* 有左孩子 */(*T)->LTag = Link;CreateBiThrTree(&(*T)->rchild); /* 遞歸構造右子樹 */if ((*T)->rchild) /* 有右孩子 */(*T)->RTag = Link;}return OK; }BiThrTree pre; /* 全局變量,始終指向剛剛訪問過的結點 *//* 中序遍歷進行中序線索化 */ void InThreading(BiThrTree p) {if (p){InThreading(p->lchild);/* 遞歸左子樹線索化 *///中序if (!p->lchild)//沒有左孩子{p->LTag = Thread;p->lchild = pre;}if (!pre->rchild){pre->RTag = Thread;pre->rchild = p;}pre = p;InThreading(p->rchild);/* 遞歸右子樹線索化 */} }/* 中序遍歷二叉樹T,并將其中序線索化,Thrt指向頭結點 */ Status InOrderThreading(BiThrTree* Thrt, BiThrTree T) {*Thrt = (BiThrTree)malloc(sizeof(BiThrNode));if (!*Thrt)exit(OVERFLOW);(*Thrt)->LTag = Link; /* 建頭結點 */ // link == 0(*Thrt)->RTag = Thread; // thread == 1(*Thrt)->rchild = (*Thrt); /* 右指針回指 */if (!T) /* 若二叉樹空,則左指針回指 */(*Thrt)->lchild = *Thrt;else{(*Thrt)->lchild = T;pre = (*Thrt);InThreading(T); /* 中序遍歷進行中序線索化 */pre->rchild = *Thrt;pre->RTag = Thread; /* 最后一個結點線索化 */(*Thrt)->rchild = pre;}return OK; }/* 中序遍歷二叉線索樹T(頭結點)的非遞歸算法 */ Status InOrderTraverse_Thr(BiThrTree T) {BiThrTree p;p = T->lchild; /* p指向根結點 */while (p != T){ /* 空樹或遍歷結束時,p==T */while (p->LTag == Link)p = p->lchild;if (!visit(p->data)) /* 訪問其左子樹為空的結點 */return ERROR;while (p->RTag == Thread && p->rchild != T){p = p->rchild;visit(p->data); /* 訪問后繼結點 */}p = p->rchild;}return OK; }int main() {BiThrTree H, T;printf("請按前序輸入二叉樹(如:'ABDH##I##EJ###CF##G##')\n");CreateBiThrTree(&T); /* 按前序產生二叉樹 */InOrderThreading(&H, T); /* 中序遍歷,并中序線索化二叉樹 */printf("中序遍歷(輸出)二叉線索樹:\n");InOrderTraverse_Thr(H); /* 中序遍歷(輸出)二叉線索樹 */printf("\n");return 0; }

總結

以上是生活随笔為你收集整理的大话数据结构15 : 线索二叉树的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久婷婷国产 | 在线观看免费视频a | 国产精品日本一区二区在线播放 | 在线看的免费网站 | 骚色综合 | 72种无遮挡啪啪的姿势 | 欧美日韩极品 | 中文字幕av一区 | 日韩欧美一二三区 | 波多野结衣精品在线 | 久草免费在线视频观看 | 精品熟妇无码av免费久久 | 欧美成人吸奶水做爰 | 欧美刺激性大交 | 午夜三区| 亚洲视频第一页 | 欧美精品久久久久久久免费 | 日韩最新av| 手机免费看av | 国产一区二区小视频 | av在线网站观看 | 辟里啪啦国语版免费观看 | 欧美乱论 | 香蕉久久精品日日躁夜夜躁 | 99热日本 | 91视频色版 | 欧美激情电影一区二区 | 亚洲精品国产精品乱码 | 国产精品日韩欧美大师 | 开心激情久久 | 农村偷人一级超爽毛片 | 国模人体一区二区 | 中日韩黄色大片 | 欧美日韩高清在线 | 黄网在线观看免费 | 日韩av中文字幕在线播放 | 深爱激情综合 | 日本丰满熟妇bbxbbxhd | 一区中文字幕 | 日本视频h| 国产乱子轮xxx农村 岛国久久久 | 国产黄色激情视频 | 日韩一区二区不卡视频 | 亚洲女同二女同志 | 色偷偷网 | 欧美激情视频一区 | 操一操| 亚洲精品一区三区三区在线观看 | 天天操夜夜摸 | 久热国产在线 | 蜜桃av网站| 亚洲天堂精品一区 | 亚洲国产一二三区 | 亚洲不卡中文字幕无码 | 欧美激情3p | 国内av| 牛牛在线免费视频 | 91精品亚洲一区 | 蜜桃传媒 | av毛片大全 | 国产女人18毛片水18精 | 中文字幕一区二区三区夫目前犯 | 国产成人一区二区三区影院在线 | 美女户外露出 | 手机看片日韩在线 | 成人在线视频网站 | 国产人久久人人人人爽 | 麻豆影视网站 | 麻豆影视 | 国产免费无遮挡吸奶头视频 | 亚洲青青草 | 欧美日韩国产亚洲一区 | 亚洲AV无码久久精品色三人行 | 国产精品欧美久久久久天天影视 | 国产不卡二区 | 国产只有精品 | 亚洲精品乱码久久久久 | 毛片网在线观看 | 黄色一级片网站 | 中文字幕第3页 | 国产乱国产乱老熟300部视频 | 国产精品第13页 | 中文字幕一区二区三区人妻不卡 | 欧美日韩va | av免费播放| 97免费在线观看视频 | 污污视频在线播放 | 先锋av网| 色婷婷社区 | 亚洲欧美日韩精品在线观看 | 亚洲精品国产精华液 | 97视频入口 | 久久国产这里只有精品 | beeg日本高清xxxx18 | 亚洲av成人片色在线观看高潮 | 国产一级在线观看视频 | 久久精品一二三 | 日韩欧美高清dvd碟片 | 91超碰在线免费观看 |