BST--建立插入遍历

    科技2022-08-10  114

    BST: 二叉查找树/排序二叉树/二叉搜索树/二叉排序树 二叉查找树由根节点,左子树,右子树组成, 左子树和右子树又是二叉查找树, 左子树的节点的数据域小于或等于根节点的数据域, 右子树的节点的数据域大于根节点的数据域

    二叉查找树的基本操作 1. 2.插入操作: 对于一棵二叉查找树来说, 查找某个数据域的节点一定是沿着确定的路径进行的。

    因此,当对某个需要查找的值在二叉查找树中查找成功,说明该节点存在; 反之,如果这个需要查找的值在二叉查找树中查找失败,那么说明查找失败的地方一定是节点需要插入的地方。

    因此可以在上面查找操作的基础上,在root==NULL时,新建需要插入的节点。 显然插入的时间复杂度为O(h),h为二叉查找树的高度

    struct node{ typename data; node* lchild; node* rchild; }; //需要新建节点,往二叉树中插入节点,使用下列函数 node* newNode(int v){ node* Node = new node;//申请一个node型变量的地址空间 Node->data=v;//节点权值为v Node->lchild=Node->rchild=NULL;//初始状态下没有左右孩子 return Node;//返回新建节点的地址 }; //insert函数 将在二叉树中插入一个数据域为x的新节点(注意,参数root要加引用&) void insert(node* &root,int x){ if(root==NULL){ //空树,说明查找失败,即插入位置 root=newNode(x);//需要新建节点,往二叉树中插入节点,使用下列函数 return; } if(x==root->data){ return; }else if(x<root->data){ insert(root->lchild,x); }else{ insert(root->rchild,x); } }

    3.二叉查找树的建立 建立一棵二叉查找树,就是先后插入n个节点的过程, 这和一般二叉树的建立是完全一样的,因此代码也基本相同

    struct node{ typename data; node* lchild; node* rchild; }; //需要新建节点,往二叉树中插入节点,使用下列函数 node* newNode(int v){ node* Node = new node;//申请一个node型变量的地址空间 Node->data=v;//节点权值为v Node->lchild=Node->rchild=NULL;//初始状态下没有左右孩子 return Node;//返回新建节点的地址 }; //二叉树的建立 void insert(node* &root,int x){ if(root==NULL){ //空树,说明查找失败,即插入位置 root=newNode(x); return; } if(x==root->data){ return; }else if(x<root->data){ insert(root->lchild,x); }else{ insert(root->rchild,x); } } //---------------------------------------------- node* Create(int data[],int n){ node* root=NULL;//新建节点root for(int i=0;i<n;i++){ insert(root,data[i]);//将data[0]~data[n-1]插入二叉树中 } return root; }

    二叉树的遍历-查找-死胡同 1.先序遍历

    void preOder(node* root){ if(root==NULL){ return;//到达空树,递归边界 } //访问根节点,例如将其数据域输出 printf("%d\n",root->data) //访问左子树 preOrder(root->lchild); preOrder(root->rchild); } ///因为先序遍历先访问根节点,因此对一棵二叉树的先序遍历序列 //序列的第一个一定是根节点
    Processed: 0.013, SQL: 8