# include# include /* 递归前中后遍历 */typedef struct 节点 { int 才能;数据; struct 才能;节点*离开; struct 才能;节点*正确; }BTnode; BTnode * CreateTree (int [], int n) { BTnode才能*,*,* p * pa; int 才能;我; 根=(BTnode *)才能malloc (sizeof (BTnode)); 根才能→数据=https://www.yisu.com/zixun/a [0]; 根->左=根->右=零;//建立根节点 (我=1, 数据=[我]; p ->左=p ->右=零; c=根;//根节点给C指针 而(c) {//判断p结点时属于左子树还是右子树 pa=c;//pa指针是p结点的父节点 如果(c -> p ->数据) c=c ->左; 其他的 c=c ->; } 如果(pa -> p ->数据)//p结点时父节点的左孩子还是右孩子 pa ->左=p; 其他的 pa ->右=p; } 返回根; } BTnode *查询(BTnode *根,BTnode *父母,BTnode * p, int键) { 如果根(!) p=父母; 返回NULL; 如果(根->数据==键) p=根; 返回根; 如果(关键<根->数据) 返回查询(根->左,根,p键); 如果(键>根->数据) 返回查询(根->吧,根,p键); } 空白福特(BTnode *根) { 如果(根){ printf (" % d”,根->数据); printf ("/n”); 福特(根->左); 福特(根->右); } } 空白”(BTnode *根) { 如果(根){ 有条不紊地进行(根->左); printf (" % 3 d”,根->数据); printf ("/n”); 有条不紊地进行(根->右); } } 空白Porder (BTnode *根) { 如果(根){ Porder(根->左); Porder(根->右); printf (" % 6 d”,根->数据); printf ("/n”); } } int主要(空白) { BTnode *根; int *; int n; int我; printf(“请输入n="); scanf(“% d”,n);=(int *) malloc (n * sizeof (int)); printf(“请输入数组一个[]="); (我=0; 数据); }