• 二叉排序树插入结点


    二叉排序树插入结点

    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);//中序遍历右子树
    	}
    }
    
  • 相关阅读:
    python列表(包含列表方法)
    python数据类型和运算符
    python计算机初识
    python运行过程,变量,符号
    python·if语句
    python`while循环
    <select></select> php表单怎么传值
    thinkPhp3 空操作
    thinkphp3.1和3.2的<模板替换>的区别
    thinkphp3 空操作 如果为空会怎么样 empty name=""
  • 原文地址:https://www.cnblogs.com/tgkx1054/p/2662900.html
Copyright © 2020-2023  润新知