下载麻将游戏免费|手机麻将游戏

判斷一棵二叉樹是否為二叉排序樹

飛來科技  發布時間:2019-08-24 05:06:52

本文關鍵詞:判斷二叉排序樹

判斷完全二叉樹的算法_判斷二叉排序樹_排序二叉樹的遍歷

本文鏈接:

判斷完全二叉樹的算法_判斷二叉排序樹_排序二叉樹的遍歷

二叉排序樹(Binary Sort Tree),又稱二叉查找樹(Binary Search Tree),亦稱二叉搜索樹。

判斷二叉排序樹_判斷完全二叉樹的算法_排序二叉樹的遍歷

二叉排序樹或者是一棵空樹,或者是具備以下性質的二叉樹:

判斷二叉排序樹_排序二叉樹的遍歷_判斷完全二叉樹的算法

(1)若左子樹不空判斷二叉排序樹,則左子樹上所有節點的值均大于或等于它的根節點的值;

判斷二叉排序樹_判斷完全二叉樹的算法_排序二叉樹的遍歷

(2)若右子樹不空判斷二叉排序樹,則右子樹上所有節點的值均小于或等于它的根節點的值;

(3)左、右子樹也分別為二叉排序樹;

#include<stdio.h>
#include<stdlib.h>
#define MIN  -256;
typedef int TElemType;
typedef struct BiTNode
{
    TElemType data;
    struct BiTNode *lchild,*rchild; //左右孩子指針 
}BiTNode,*BiTree;
//判斷一棵二叉樹是不是二叉排序樹  
//思路:二叉排序樹的特點是,若左子樹非空,則左子樹上結點的值均小于根結點的值;  
//若右子樹非空,則右子樹上結點的值均大于根結點的值。所以根據這一特點,可以看出  
//二叉排序樹的中序遍歷是一個遞增序列。  
int prev = MIN;
int flag = true;
bool InOrderTraverse(BiTree T)
{
    if(T->lchild != NULL && flag)
    {
        InOrderTraverse(T->lchild);
    }
    if(T->data<prev)
    {
        flag = false;
    }
    prev = T->data;
    if(T->rchild != NULL && flag){
        InOrderTraverse(T->rchild);
    }
    return flag;
}
void CreateBiTree(BiTree * T)   //二叉樹的建立
{
    TElemType data;
    scanf("%d",&data);
    if(data==-1)
    {
        *T=NULL;
    }
    else
    {
        *T=(BiTree)malloc(sizeof(BiTNode));
    }
    if(!*T)
    {
        return ;
    }
    else
    {
        (*T)->data=data;
        CreateBiTree(&(*T)->lchild);    //構造左子樹
        CreateBiTree(&(*T)->rchild);    //構造右子樹
    }   
}
//***********測試代碼************  
//           10               
//         /                      
//        7              
//       /\                 
//      4  8  
//          \  
//           9  
//***********測試代碼************  
//           10               
//         /                      
//        1              
//       /\                 
//      4  8  
//          \  
//           9  
int main()
{
    BiTree root;
    printf("請輸入數據:\n");
    CreateBiTree(&root);
    bool flag = InOrderTraverse(root);
    if(flag)
    {
        printf("\n該二叉樹是排序二叉樹\n");
    }else
    {
        printf("\n該二叉樹不是排序二叉樹\n");
    }
    return 0;
}

這里寫圖片描述

本文來自互聯網,由機器人自動采編,文章內容不代表本站觀點,請讀者自行辨別信息真偽,如有發現不適內容,請及時聯系站長處理。

    相關閱讀
    下载麻将游戏免费 时时彩包胆技巧 新疆时时大奖 三牛娱乐注册地址 江苏时时计划软件 重庆时时彩是否是骗局 欢乐生肖论坛 玩百人牛牛有什么技巧 28码计划官网 时时彩后三七码复式 g高博国际娱乐官网