1:二叉排序樹,又稱二叉樹。其定義為:二叉排序樹或者空樹,或者是滿足如下性質的二叉樹。
(1)若它的左子樹非空,則左子樹上所有節點的值均小於根節點的值。
(2)若它的右子樹非空,則右子樹上所有節點的值均大於根節點的值。
(3)左、右子樹本身又各是一顆二叉排序樹。
上述性質簡稱二叉排序樹性質(bst性質),故二叉排序樹實際上是滿足bst性質的二叉樹。
2:**如下:
#include "stdafx.h"
#include#include #include using namespace std;
//定義節點類
class node
; node(int num) :data(num), parent(null), left(null), right(null) {};
};//二叉排序樹類定義
class tree
;//插入num陣列的前len個資料
tree::tree(int num, int len)
}//插入資料為引數data的節點,非遞迴方法
void tree::insertnode1(int data)//插入節點
}newnode->parent = par;
if (par->data > newnode->data)//把新節點插入在目標節點的正確位置
par->left = newnode;
else
par->right = newnode;
}//插入資料為引數data的節點,呼叫遞迴插入方法
void tree::insertnode(int data)
}//遞迴插入方法
void tree::insertnode(node * current, int data)
else
insertnode(current->left, data);//否則對左節點進行遞迴呼叫
}//如果data大於當前節點資料,則在當前節點的右子樹插入
else if (data > current->data)
else
insertnode(current->right, data);//否則對右節點進行遞迴呼叫
}return;//data等於當前節點資料時,不插入
}//遞迴查詢方法
node *tree::searchnode(node* current, int data)
//如果data大於當前節點資料,則遞迴搜尋右子樹
else if (data > current->data)
//如果相等,則返回current
return current;
}//刪除資料為data的節點及其子樹
void tree::deletenode(int data)
}//刪除current節點及其子樹的所有節點
void tree::deletenode(node *current)
if (current->right != null)//刪除右子樹
if (current->parent == null)//如果current是根節點,把root置空
//將current父親節點的相應指標置空
if (current->parent->data > current->data)//current為其父節點的左子節點
current->parent->left = null;
else//current為parnode的右子節點
current->parent->right = null;
//最後刪除此節點
delete current;
}//中序遍歷,遞迴方法
void tree::inordertree()
//用於中序遍歷
void tree::inordertree(node* current)
}int main()
{ node m_node(1);
cout << "節點類的資料為:"
收藏
資料結構 遞迴實現二叉樹
二叉樹 在電腦科學中,二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱作 左子樹 left subtree 和 右子樹 right subtree 二叉樹常被用於實現二叉查詢樹和二叉堆。二叉樹的每個結點至多只有二棵子樹 不存在度大於2的結點 二叉樹的子樹有左右之分,次序不能顛倒。二叉樹的第i層至...
資料結構C 實現 二叉樹
adt btree btnode const t x btnode const t x,btnode l,btnode r 三個資料成員 t element btnode lchild,rchild 二叉樹類包含唯一的資料成員,它是指向乙個二叉鍊錶根結點的指標root 二叉樹類 先建立二叉樹結點類 ...
資料結構 二叉樹練習 遞迴
以孩子兄弟鏈作為樹的儲存結構,編寫乙個求樹高度的遞迴演算法。遞迴模型 設f t 為樹t的高度 f t 0 若t null f t 1 若t沒有孩子節點 f t max f p 1 其他情況 p為t的孩子 int treeheight tsbnode t return max 1 二叉樹應用練習 假設...