#include<stdio.h> #include<stdlib.h> #include<malloc.h> #include<string.h> #include<string.h> #include<algorithm> #include<math.h> using namespace std ; typedef struct q//定义二叉树 { int data; struct q *left; struct q *right; }binode; void init(binode **t)//初始化 { *t = (binode *)malloc (sizeof (binode)); (*t)->left = NULL; (*t)->right = NULL; } binode *insertleft ( binode *curr,int x )//左节点插入 { binode *t,*s; if (curr == NULL) return 0; t=curr->left; s=(binode *)malloc(sizeof(binode)); s->data = x; s->left=NULL; s->right=NULL; curr->left=s; return curr->left; } void des(binode **curr)//撤销二叉树 { if ( (*curr)!=NULL && (*curr)->left != NULL ) des(&(*curr)->left); if ( (*curr)!=NULL && (*curr)->right != NULL ) des(&(*curr)->right); free(*curr); } binode *deleleft(binode *curr)//左子树删除 { if (curr == NULL || curr->left == NULL) return 0; des(&curr->left); curr->left=NULL; return curr; } void vis(char a) { printf("%c ",a); } void pinor(binode *curr,void vis(char a ))//前序遍历 { if (curr!=NULL) { vis(curr->data); pinor(curr->left,vis); pinor(curr->right,vis); } } void inor(binode *curr,void vis(char a ))//中序遍历 { if (curr!=NULL) { inor(curr->left,vis); vis(curr->data); inor(curr->right,vis); } } void poinor(binode *curr,void vis(char a ))//后序遍历 { if (curr!=NULL) { poinor(curr->left,vis); poinor(curr->right,vis); vis(curr->data); } } void print(binode *curr ,int n)//打印二叉树,n为缩进层数,初始为0; { int i; if (curr == NULL) return ; print(curr->right,n+1); for (i=0;i<n-1;i++) printf(" "); //访问根节点 if (n>0) { printf("---"); printf("%c\n",curr->data); } print(curr->right,n+1); } binode *search(binode *curr,int x)//查找操作 { if (curr == NULL) return 0; binode *find; if (curr!=NULL) { if (curr->data == x) find = curr; } else { find = search(curr->left,x); if (find == NULL) find = search(curr->right,x); } return find; } int main() { return 0; }