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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构---判断一棵树是否是二叉搜索树

發(fā)布時間:2023/12/4 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构---判断一棵树是否是二叉搜索树 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

數(shù)據(jù)結(jié)構(gòu)—判斷一棵樹是否是二叉搜索樹

代碼:

#pragma once #define N 100 #define elemType BTree* #include<stdlib.h> typedef struct BTree {int data;struct BTree *lchild, *rchild; }BTree; typedef struct dQueue {elemType data;struct dQueue* next; }dQueue; typedef struct queue {dQueue *front, *rear; }queue; bool initQueue(queue &Queue) {//初始化隊(duì)列//Queue.front = new dQueue;Queue.front = Queue.rear = (dQueue*)malloc(sizeof(dQueue));if (!Queue.front) {return false;}Queue.front->next = NULL;//頭結(jié)點(diǎn)return true; } elemType getQueueTopElem(queue &Queue) {//獲取隊(duì)列隊(duì)頭的元素elemType u=NULL ;if (Queue.front != Queue.rear) {dQueue* p = Queue.front->next;u = p->data;}return u; } bool enQueue(queue &Queue, elemType e) {//入隊(duì)dQueue* p = Queue.rear;dQueue* s = (dQueue*)malloc(sizeof(dQueue));s->data = e;s->next = NULL;p->next = s;Queue.rear = s;return true; } bool deQueue(queue &Queue, elemType &e) {//出隊(duì)if (Queue.front == Queue.rear) {return false;//空隊(duì)}dQueue* p = Queue.front->next;e = p->data;Queue.front->next = p->next;if (p == Queue.rear) {//隊(duì)尾只有一個元素的時候Queue.rear = Queue.front;}delete p;return true; } bool emptyQueue(queue Queue) {//隊(duì)列為空的判斷if (Queue.front == Queue.rear) {return true;}return false; } #include <stdio.h> #include <stdlib.h> //#include "BTree.h" #include"queue.h" int preElem = -1; void createBSTTree(BTree* & T, int data) {//創(chuàng)建二叉排序樹BTree *p = NULL;if (!T) {p = (BTree*)malloc(sizeof(BTree));p->data = data;p->lchild = p->rchild = NULL;T = p;return;}if (data < T->data) {//左子樹插入createBSTTree(T->lchild, data);}else {//右子樹插入createBSTTree(T->rchild, data);} } int isBST(BTree* bTree) {//必須滿足嚴(yán)格的左子樹結(jié)點(diǎn)的值小于跟結(jié)點(diǎn)的值,右節(jié)點(diǎn)的值大于根節(jié)點(diǎn)的值int b1, b2;//中序遍歷+遞歸返回值影響if (bTree == NULL) {//小條件退出return 1;}else {b1 = isBST(bTree->lchild);if (b1 == 0 || preElem >= bTree->data) {return 0;}preElem = bTree->data;b2 = isBST(bTree->rchild);return b2;} } int isBST2(BTree* btree) {//非遞歸queue q;initQueue(q);enQueue(q, btree);while (!emptyQueue(q)) {BTree* temp;deQueue(q, temp);if (temp&&temp->lchild) {if(temp->lchild->data >= temp->data)return 0;elseenQueue(q, temp->lchild); }if (temp&&temp->rchild) {if (temp->rchild->data < temp->data)return 0;elseenQueue(q, temp->rchild);}}return 1; } void midTraverseTree(BTree* BSTTree) {//中序遍歷二叉排序樹if (BSTTree) {midTraverseTree(BSTTree->lchild);printf("%d ", BSTTree->data);midTraverseTree(BSTTree->rchild);} } int main() {BTree* T = NULL;//一定要初始化為空樹int count, data;printf("開始構(gòu)造二叉排序樹:\n輸入二叉排序樹結(jié)點(diǎn)的數(shù)目:");scanf_s("%d", &count);while (count--) {//構(gòu)造二叉排序樹printf("輸入二叉樹的第%d個結(jié)點(diǎn):", count + 1);scanf_s("%d", &data);createBSTTree(T, data);}printf("中序遍歷二叉樹\n");midTraverseTree(T);//中序遍歷二叉排序樹printf("\n方法一判斷是否是二叉排序樹\n");if (isBST(T)) {printf("\n是二叉排序樹\n");}else {printf("\n不是二叉排序樹\n");}printf("\n方法二判斷是否是二叉排序樹\n");if (isBST2(T)) {printf("\n是二叉排序樹\n");}else {printf("\n不是二叉排序樹\n");}printf("\n");system("pause");return 0; }

測試截圖:

時間復(fù)雜度O(n或nlogn),空間復(fù)雜度O(1)

如果存在什么問題,歡迎批評指正!謝謝!

總結(jié)

以上是生活随笔為你收集整理的数据结构---判断一棵树是否是二叉搜索树的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 美女又爽又黄视频毛茸茸 | 老司机午夜精品 | 欧美精品激情 | 国产免费福利视频 | 国产做受91 | 毛片在线播放视频 | 日韩有码在线观看 | 男人天堂va| 黄网站色视频免费观看 | 91精品国产一区二区三区 | 日韩精品观看 | 男人的天堂影院 | 成人毛片在线 | 亚洲精品视频久久久 | 国产精品第13页 | 亚洲人成电影网 | 亚洲熟女一区二区 | 视频在线观看视频 | 一区二区三区激情 | 国内视频一区二区 | 蜜臀av一区二区三区 | 欧美乱淫| 日韩三级大片 | 99热精品国产| 亚洲精品综合精品自拍 | 国产乱来视频 | 色狠狠av | 色窝窝无码一区二区三区 | 妻色成人网 | 久久久久人妻一区 | 天堂在线中文网 | 国产片淫乱18一级毛片动态图 | 亚洲国产第一区 | 香蕉av在线 | 制服诱惑一区二区三区 | 女性爱爱视频 | 97免费视频观看 | 国产免费久久久 | 欧美日韩一区二区三区国产精品成人 | 欧美国产二区 | 日韩深夜福利 | 青青青国产 | 久久国产加勒比精品无码 | 国产日日夜夜 | 国产精品久久网站 | 在线观看免费人成视频 | 好看的中文字幕av | 欧洲精品久久久 | 国产成人精品免费看视频 | 天天草夜夜草 | 黄色在线播放网站 | 亚洲成人网在线播放 | 国产自产一区二区 | 国产性xxx | jizz高潮 | 男女激情四射网站 | 国产免费久久精品国产传媒 | 国产福利资源在线 | 激情丁香网 | 伊人狠狠操 | 欧美岛国国产 | 无码乱人伦一区二区亚洲 | 91av看片 | 亚洲图片在线视频 | 成人婷婷 | 亚洲自拍偷拍图 | 无码人妻丰满熟妇区五十路 | 中文一二区 | 日韩av片在线 | 国产免费一区二区三区网站免费 | 国产精品成人69xxx免费视频 | 无码免费一区二区三区 | 女人一区二区三区 | 九九热视 | 四虎影库永久在线 | 日韩欧美在线不卡 | 欧美一级在线 | 在线午夜电影 | 日韩欧美国产一区二区 | 中文字幕狠狠干 | 夫妻啪啪呻吟x一88av | 天堂在线视频网站 | 无码人妻精品一区二区中文 | 国产美女视频免费观看下载软件 | 美女诱惑一区 | 空姐毛片 | 无码aⅴ精品一区二区三区浪潮 | 激情的网站 | 影音先锋啪啪资源 | 中文字幕不卡在线播放 | 久久国产精品网 | 污污视频免费观看 | 第四色成人网 | 成人免费va视频 | 久久久久久麻豆 | 国产网红在线观看 | 欧美综合在线视频 | 国产精品电影一区二区 | 色一情一乱一伦一区二区三区 |