// 樹.cpp : 定義控制台應用程式的入口點。//#include "stdafx.h"
#include "malloc.h"
#include
#include
typedef struct bstnode//二叉排序樹結點
bstnode,*bitree;
bool bst_insert(bitree &t,int k)//二叉排序樹的插入
else if (k==t->data)
return false; //插入失敗
else if (kdata)
return bst_insert(t->lchild,k); //插入到t的左子樹
else
return bst_insert(t->rchild,k);//插入到t的右子樹
}void createbst(bitree &t,int key,int n)//二叉排序樹的構造
void preorder(bitree t)
}void inorder(bitree t)
}bstnode* bst_search(bitree t,int key,bstnode *&p)//二叉排序樹的非遞迴查詢演算法
return t;
}bstnode* nextnode(bstnode* p)
}return p;
}bstnode* bst_delete(bitree &t,int key)
else if (q->lchild && q->rchild)//如果q有左右兩棵子樹
else//該結點是根結點
//free(q);//釋放結點
}else //q只有一顆子樹
else if (p->rchild==q)
}return q;
}int _tmain(int argc, _tchar* argv)
;createbst(t,key,n);//建立二叉排序樹
preorder(t); //前序遍歷
printf("\n");
inorder(t);//中序就是key的順序
printf("\n");
/*bstnode *p,*q;
q=bst_search(t,3,p);
if (p)
printf("%d\n",p->data);
p=nextnode(q);
if (p)
printf("%d\n",p->data);*/
//bst_delete(t,5);
/測試,二叉樹先序加中序或者中序加後序能唯一確定一顆二叉樹//
preorder(t);
printf("\n");
inorder(t);
printf("\n");
return 0;
}
二叉樹基本操作
tree.h ifndef tree h define tree h include typedef int element 定義二叉樹 typedef struct nodetreenode void preorder treenode root 遞迴前序遍歷 void inorder treen...
二叉樹基本操作
一.二叉樹的定義 二.二叉樹的建立 定義一棵無資料的二叉樹 6 int left size 7 int right size 為了操作簡便,我們定義一棵不需要儲存資料的二叉樹,只要能儲存節點之間的邏輯關係就行,所以用兩個陣列來表示。left i 第i個節點的左子節點的序號 right i 第i個節點...
二叉樹基本操作
include include define maxsize 100 typedef char elemtype typedef struct node btnode void createbtnode btnode b,char str 由str串建立二叉鏈 j ch str j btnode f...