二叉樹的基本操作

2021-07-02 04:09:01 字數 1451 閱讀 7802

// 樹.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...