二叉查詢樹主要包含以下演算法:search,insert,delete,max,min,successor和predecessor。下面的程式是在vc6.0下實現的。其中,關於insert和search提高了迭代和遞迴兩個版本,display使用了遞迴版本,其餘演算法都只提供了迭代版本。
#include
using namespace std;
template
class binarysorttree;
template
class node
friend binarysorttree;
private:
type data;
node *left;
node *right;
node *parent;
};template
class binarysorttree
node*searchiteration(type data)
return null;
}node*searchrecursion(int data)
node*predecessor(node*p)else
return q;
}node*successor(node*p)else
return q;
}node*min()
return null;
}node*max()
return null;
}void insertiteration(type data)
node*newnode = new node(data);
if (parent == null)
root = newnode;
else
}void insertrecursion(type data)
node*del(type data)
if (y != z)
z->data = y->data;
return y;
}void display()
private:
void displayonenode(node*root, int layer)
node*searchrecursion(node*root, type data)
void insertrecursion(node*parent, node*cur, node*newnode)
return;
}if (cur->data > newnode->data)
insertrecursion(cur, cur->left, newnode);
else
insertrecursion(cur, cur->right, newnode);
}private:
node*root;
};void main();
for (int i = 0; i < sizeof(arr)/sizeof(arr[0]); i ++)
binarytree.insertiteration(arr[i]);
cout << "**************" << endl;
binarytree.display();
int deldata = ;
for (i = 0; i < sizeof(deldata)/sizeof(deldata[0]); i ++)
}//test recursion algorithm
binarysorttreebinarytree2;
cout << "test insertrecursion" << endl;
for (i = 0; i < sizeof(arr)/sizeof(arr[0]); i ++)
binarytree2.insertrecursion(arr[i]);
binarytree2.display();}
演算法 二叉查詢樹
二叉查詢樹 binary search tree 也稱有序二叉樹 ordered binary tree 排序二叉樹 sorted binary tree 是指一棵空樹或者具有下列性質的二叉樹 1.若任意節點的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值 2.若任意節點的右子樹不空,則右子...
二叉查詢樹演算法
判斷二插查詢樹是否含有 指定結點 param x return public boolean contains t x private boolean contains t x binarynode t int compareresult x.compareto t.element if compa...
二叉查詢樹,實現
public class binarytree 移除乙個節點 分三種情況,乙個是 該節點本身是葉子,乙個是 該節點含有乙個兒子節點 乙個是 該節點還有兩個兒子節點 param e param comareelement private binarynoderemove element e,binar...