首頁 >後端開發 >C++ >一個用C語言編寫的程序,用於檢查二元樹是否為二元搜尋樹(BST)

一個用C語言編寫的程序,用於檢查二元樹是否為二元搜尋樹(BST)

WBOY
WBOY轉載
2023-08-28 12:57:051228瀏覽

一個用C語言編寫的程序,用於檢查二元樹是否為二元搜尋樹(BST)

二元樹是一種樹狀資料結構,每個節點都有兩個子節點。這兩個子節點被稱為左子節點和右子節點。

二元搜尋樹(BST)是一種樹狀結構,其中左子樹包含小於根節點的值的節點,右子樹包含大於根節點的值的節點。

在這裡,我們將檢查一個二元樹是否是BST:

為了檢查這個,我們需要在二元樹上檢查BST條件。對於根節點,左子節點的值應該小於根節點的值,而右子節點的值應該大於根節點的值,對於樹中所有存在子節點的節點都要滿足這個條件。

檢查一個二元樹是否是BST的程式

#include<bits/stdc++.h>
#include<iostream>
using namespace std;
class node {
   public:
      int data;
   node* left;
   node* right;
   node(int data) {
      this->data = data;
      this->left = NULL;
      this->right = NULL;
   }
};
int isBSTUtil(node* node, int min, int max);
int isBST(node* node) {
   return(isBSTUtil(node, INT_MIN, INT_MAX));
}
int isBSTUtil(node* node, int min, int max) {
   if (node==NULL)
      return 1;
   if (node->data < min || node->data > max)
      return 0;
   return
      isBSTUtil(node->left, min, node->data-1) && isBSTUtil(node->right, node->data+1, max);
}
int main() {
   node *root = new node(8);
   root->left = new node(3);
   root->right = new node(10);
   root->left->left = new node(1);
   root->left->right = new node(6);
   if(isBST(root))
      cout<<"The given tree is a BST";
   else
      cout<<"The given tree is Not a BST";
   return 0;
}

輸出

The given tree is a BST

程式碼解釋

上述程式碼檢查一個二元搜尋樹。主方法建立一棵樹並呼叫isBST()方法。此方法檢查左右子節點是否遵循二元搜尋樹規則,並且使用isBSTuntil()方法來檢查形成的子樹是否也是二元搜尋樹。

方法。

以上是一個用C語言編寫的程序,用於檢查二元樹是否為二元搜尋樹(BST)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除