zoukankan      html  css  js  c++  java
  • 二叉排序树插入结点

    二叉排序树插入结点

    BSTree *InsertBST(BSTree *bst,int key)       //插入节点
    {
    	BSTree *p,*s,*pre;
    	s=(BSTree*)malloc(sizeof(BSTreeNode));
    	s->data=key;
    	s->lchild=s->rchild=NULL;
    	if(bst==NULL)
    	{
    		bst=s;
    		return bst;
    	}
    	p=bst;
    	while(p)
    	{
    		pre=p;//指向其父节点
    		if(p->data==key)return p;
    		else if(p->data>key)p=p->lchild;
    		else p=p->rchild;
    	}
    	if(pre->data<key)
    		pre->rchild=s;
    	else
    		pre->lchild=s;
    	return s;
    }
    

     判断一棵二叉树是不是二叉排序树

    #include "stdafx.h"
    #include<iostream>
    using namespace std;
    typedef struct BSTreeNode
    {
    	int data;
    	struct BSTreeNode *lchild,*rchild;
    }BSTree;
    int _tmain(int argc, _TCHAR* argv[])
    {
    	return 0;
    }
    BSTree *pre=NULL;//中序遍历二叉排序树,所得序列为增序,在遍历中将当前结点和前驱结点比较。全局变量pre保存其前驱结点
    bool flag=true;//全局变量,初值为true,若不是二叉排序树,置flag为false
    void JudgeBST(BSTree *t,bool flag)
    {
    	if(t!=NULL && flag)
    	{
    		JudgeBST(t->lchild,flag);//中序遍历左子树
    		if(pre==NULL)pre=t;//中序遍历的第一个结点不必判断
    		else if(pre->data<t->data)pre=t;//前驱指针指向当前结点
    		else {flag=false;}//不是二叉排序树
    		JudgeBST(t->rchild,flag);//中序遍历右子树
    	}
    }
    
  • 相关阅读:
    其实吧
    一个很SB的方法,来开始调一个刚启动就SB的程序
    今天真的很SB
    32位程序关闭路径重定向
    WinDbg神断点
    SQLMap用户手册【超详细】

    真有敢干的
    21.递归
    16.数字大小升降排序编写
  • 原文地址:https://www.cnblogs.com/tgkx1054/p/2662900.html
Copyright © 2011-2022 走看看