zoukankan      html  css  js  c++  java
  • 二叉排序树

    1 定义
      二叉排序树,又称为二叉查找树。它或者是一颗空树,或者是具有下列性质的二叉树。
      (1)若它的左子树不为空,则左子树上所有结点的值都小于它的根结点的值;
      (2)若它的右子树不为空,则右子树上所有结点的值都大于它的根结点的值;
      (3)它的左、右子树也分别为二叉排序树。

    2 二叉排序树查找操作

    //二叉树的二叉链表结点结构定义
    typedef struct BiTNode {
        int data;
        struct BiTNode *lchild;
        struct BiTNode *rchild;
    }BiTNode;
    typedef struct BiTNode *BiTree;
    
    //递归查找二叉树中是否存在key
    //指针f指向key的双亲,初始值为NULL
    //若查找成功,则指针p指向该数据元素结点,并返回true
    //若查找失败,则指针p指向查找路径上指向的最后一个结点,并返回false
    Status SearchBST(BiTree T, int key, BiTree f, BiTree *p) {
        if (!T) {                        //查找不成功
            *p = f;
            return false;
        } else if (key == T->data) {    //查找成功
            *p = f;
            return true;
        } else if (key < T->data) {
            SearchBST(T->lchild, key, f, p);    //在左子树继续查找
        } else {
            SearchBST(T->rchild, key, f, p);    //在右子树继续查找
        }
    }
  • 相关阅读:
    nginx与uwsgi介绍
    Pycharm快捷键
    短信和图片验证码
    linux部署Django脱坑指南
    面试题汇总(七)
    面试题汇总(六)
    面试题汇总(五)
    面试题汇总(四)
    面试题汇总(二)
    iOS Block的本质(四)
  • 原文地址:https://www.cnblogs.com/muzijie/p/5716117.html
Copyright © 2011-2022 走看看