转自: http://blog.csdn.net/cnnumen/article/details/5727328
#include <cstdlib> #include <iostream> using namespace std; typedef struct _NODE { int value; struct _NODE *left; struct _NODE *right; _NODE(int value) : value(value), left(NULL), right(NULL) {}; }NODE, *PTRNODE; void insert(PTRNODE &root, int value) { if(root == NULL) root = new NODE(value); else { if(value < root->value) insert(root->left, value); else if(value > root->value) insert(root->right, value); else cout << "duplicated value" << endl; } } void clear(PTRNODE &root) { if(root != NULL) { clear(root->left); clear(root->right); delete root; root = NULL; } } void _search(PTRNODE root, int searchVal) { if(root == NULL) { cout << "not find... " << endl; return; } if(searchVal < root->value) _search(root->left, searchVal); else if(searchVal > root->value) _search(root->right, searchVal); else cout << "find... " << endl; } int main(int argc, char *argv[]) { PTRNODE root = NULL; cout << "init is: " << endl; for(int i=0; i<10; i++) { int value = rand() % 100; cout << value << " "; insert(root, value); } cout << endl; cout << "pre order result is: " << endl; preOrder(root); cout << endl; cout << "in order result is: " << endl; inOrder(root); cout << endl; cout << "post order result is: " << endl; postOrder(root); cout << endl; cout << "please input a search value: "; int searchVal; cin >> searchVal; _search(root, searchVal); clear(root); system("PAUSE"); return EXIT_SUCCESS; }
计算二叉树节点数量和高度的实现如下:
int getSize(PTRNODE root) { if(root == NULL) return 0; return 1 + getSize(root->left) + getSize(root->right); } int getHeight(PTRNODE root) { if(root == NULL) return -1; return 1 + max(getHeight(root->left), getHeight(root->right)); }
二叉树的拷贝和比较实现如下:
PTRNODE copy(const PTRNODE root) { if(root == NULL) return NULL; PTRNODE temp = new NODE(0); temp->value = root->value; temp->left = copy(root->left); temp->right = copy(root->right); return temp; } bool isEqual(const PTRNODE tree1, const PTRNODE tree2) { if(tree1 == NULL && tree2 == NULL) return true; if(tree1 != NULL && tree2 != NULL && tree1->value == tree2->value && isEqual(tree1->left, tree2->left) && isEqual(tree1->right, tree2->right)) return true; return false; }
相关推荐
1.二叉搜索树的建立 2.二叉搜索树节点的查找 3.二叉搜索树节点的删除 4.二叉搜索树的中序、后序递归遍历 5.二叉搜索树的中序、后序非递归遍历 6.二叉搜索树查找某个节点的前驱(下一个值比当前节点x大的节点)
二叉排序树,又称二叉查找树或二叉搜索树,是一种特殊的二叉树数据结构,它具有以下特性:对于树中的每个节点,其左子树中的所有节点的值都小于该节点的值,而右子树中的所有节点的值都大于该节点的值。这种性质使得...
1.实现二叉搜索树的基本操作 2.包括建立,查找,删除,显示 3.得到最长路径和最短路径,并能分别计算长度
这种特性使得二叉搜索树非常适合进行查找、插入和删除等操作。 ### 插入操作 在二叉搜索树中插入一个新节点是相当直观的。首先,从根节点开始,如果新键小于当前节点的键,就向左子树移动;如果新键大于当前节点的...
这种特性使得二叉搜索树在查找、插入和删除操作中具有高效的性能。 3. **堆**:堆是一种特殊的树形数据结构,通常为完全二叉树,分为最大堆和最小堆。在最大堆中,每个节点的值都大于或等于其子节点的值,根节点是...
这种特性使得二叉搜索树非常适合进行查找操作。 【二叉树的操作】 在二叉树中,常见的操作包括插入新节点、删除节点、查找节点以及遍历。例如,`TreeNode` 类在 `CLASS.h` 文件中被定义,它包含了节点的数据值、...
这种特性使得二叉排序树在查找、插入和删除操作上具有较高的效率。 在C语言中,二叉排序树可以通过结构体来表示。以下是一个简单的二叉排序树节点结构体定义: ```c typedef struct BiTNode { char data; // 数据...
这一特性使得二叉搜索树在查找、插入和删除操作上具有较高的效率。 1. 查找操作:在二叉搜索树中查找特定键的节点时,可以从根节点开始,如果键等于当前节点的键,则查找成功;如果键小于当前节点的键,则在左子树...
这种结构使得在二叉排序树中进行查找、插入和删除操作的效率较高,特别是对于近乎平衡的树,其时间复杂度可以达到O(log n)。 在`main.cpp`文件中,我们可以期待看到关于二叉排序树基本操作的实现,包括以下部分: ...
二叉排序树(Binary Sort Tree,BST),也称为二叉搜索树,是一种特殊的二叉树数据结构,它的每个节点都包含一个键值,且满足以下性质:对于任意节点,其左子树中的所有节点的键值都小于该节点的键值,而右子树中的...
二叉树是计算机科学中一种重要的数据结构,它由节点构成,每个节点最多有两个...二叉搜索树则在实际应用中展现出高效性,特别是在需要快速查找和排序的场景。通过学习和实践这些概念,我们可以更好地应对各种编程挑战。
这种特性使得在二叉排序树中进行查找、插入和删除操作的时间复杂度可以达到最优的O(logn),在最坏情况下可能退化为链表,此时时间复杂度为O(n)。 1. **插入操作**:`InsertBST` 函数实现了在二叉排序树中插入一个新...
二叉排序树,又称二叉查找树或二叉搜索树,是一种特殊的二叉树数据结构,它具有以下特性:对于树中的每个节点,其左子树中的所有节点的值都小于该节点的值,而右子树中的所有节点的值都大于该节点的值。这种性质使得...
二叉排序树,也称为二叉搜索树,是一种特殊类型的二叉树,它的每个节点都遵循以下规则: 1. 左子树中的所有节点的值都小于当前节点的值。 2. 右子树中的所有节点的值都大于当前节点的值。 3. 左右子树也必须是二叉...
#### 二、二叉排序树的建立、查找与删除 **定义**:二叉排序树(Binary Search Tree,BST)是一种特殊的二叉树,其中每个节点的值都大于其左子树中的所有节点的值,并且小于其右子树中的所有节点的值。 **建立二叉...
二叉排序树(Binary Sort Tree,BST),也称为二叉搜索树,是一种特殊的二叉树数据结构,它具有以下特性: 1. 每个节点包含一个键(key)、一个关联的值、一个指向左子节点的引用和一个指向右子节点的引用。 2. ...
该设计要求我们完成四个基本操作:创建二叉搜索树、中序遍历、查找结点和删除结点。 二、C/C++语言简介 C 语言是一种结构化语言,具有层次清晰、易于调试和维护的特点。C语言的表现能力和处理能力极强,可以直接...
6. **平衡二叉树(AVL树)**:AVL树是最早的自平衡二叉搜索树,每个节点的两个子树高度差不超过1,以确保查找效率。AVL树的插入和删除操作后可能需要进行旋转操作来恢复平衡。 7. **中序输出平衡二叉树**:同样,对...
二叉排序树(Binary Sort Tree,BST),也称为二叉搜索树,是一种特殊的二叉树数据结构,它的每个节点都包含一个键值,且满足以下性质:对于任意节点,其左子树中所有节点的键值均小于该节点的键值;其右子树中所有...
这种结构使得二叉排序树非常适合进行查找、插入和删除操作。 在文档描述的程序中,使用了C语言编写,并在VC++6.0环境下运行。程序实现了以下主要功能: 1. **建立二叉排序树**:根据输入的一组关键值,构建相应的...