#include <iostream> using namespace std; //--------------biTree node struct---------- struct tree { struct tree * left; int data; struct tree * right; }; typedef struct tree treeNode;//-------- define type typedef treeNode * b_tree; //-----------define pointer //-------------visit ------------------------------------ void visit(int a) { cout<<" "<<a; } //-------------- insert a tree node into root whose data is node(int type) ---------- b_tree insert(b_tree root, int node ) { b_tree currentNode; b_tree newNode; b_tree parentNode; //----------create a new node -------- newNode =new treeNode; newNode->data = node; newNode->left = NULL; newNode->right = NULL; // if (root==NULL) { return newNode; } /* else { //我写的这个只能给root添加,不能用,考虑失策 currentNode = root; if (currentNode->data > node) { currentNode->left = newNode; } else { currentNode->right =newNode; } } */ else { currentNode = root;//----why while (currentNode!=NULL)//------why { parentNode = currentNode; if (currentNode->data > node) { currentNode =currentNode->left; } else currentNode = currentNode->right; } if (parentNode->data >node) { parentNode->left = newNode; } else parentNode->right = newNode; } return root; //========why return root ? reason } //--------------create a tree using a array-------------- b_tree createTree(int* data, int len) { b_tree root = NULL; int i =0; for (i =0;i< len;i++) { insert(root,data[i]); } return root;//========why return root ? reason } //-------------inorder visit ----------------------------- void inorder(b_tree point) { if (point !=NULL) { inorder(point->left); visit(point->data); inorder(point->right); } } void main() { int data[5]={1,2,3,4,5}; int len=5; b_tree root =createTree(data, len); inorder(root); }