首页 > 其他分享 >二叉

二叉

时间:2023-09-23 22:02:27浏览次数:23  
标签:结点 BSTreeNode 二叉 搜索 key 指针

二叉搜索树的概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:

若它的左子树不为空,则左子树上所有节点的值都小于根节点的值

若它的右子树不为空,则右子树上所有节点的值都大于根节点的值

它的左右子树也分别为二叉搜索树

二叉搜索树还有一个特征:按照中序走的话是一个升序的状态。所以二叉树搜索树可以叫做二叉排序树或二叉查找树。

二叉搜索树的操作及实现 二叉搜索树的结构 首先实现一个结点类,结点类当中包含三个成员变量:结点值、左指针、右指针,同时结点类当中要对成员变量进行初始化,需要实现一个构造函数,用于将结点的左右指针置空和初始化指定结点值。

结点类的代码实现:

复制 //二叉树搜索树结点类 template<class K> struct BSTreeNode { BSTreeNode<K>* _left;//左指针 BSTreeNode<K>* _right;//右指针 K _key;//节点值 //构造函数 BSTreeNode(const K& key) :_left(nullptr) ,_right(nullptr) ,_key(key) {} }; template<class K> class BSTree { //喜欢在类里进行类型重定义,因为受到类域的限制 typedef BSTreeNode<K> Node; private: Node* _root = nullptr; //可以给一个构造函数,也可以直接写一个缺省值 };

标签:结点,BSTreeNode,二叉,搜索,key,指针
From: https://blog.51cto.com/u_15562309/7581319

相关文章

  • 代码随想录算法训练营day17 | ● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404.
    110.平衡二叉树classSolution{public:intgetHeight(TreeNode*node){if(node==NULL)return0;intleftHeight=getHeight(node->left);if(leftHeight==-1)return-1;intrightHeigh......
  • 最优二叉树(Huffman 树)
    题目\(k\)叉树\(T\)有\(n\)片树叶。每片树叶\(v_i\)的权为\(w_i\),深度为\(l(v_i)\)。\(T\)的权值为\(W=\sumw_i\l(v_i)\)。求\(W\)的最小值。和在保证\(W\)最小的情况下,\(\maxl(v_i)\)的最小值。数据范围:\(1\len\le10^5\),\(2\lek\le10\),\(0<w_i......
  • 二叉搜索树的概念
    二叉搜索树的概念二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树二叉搜索树还有一个特征......
  • 代码随想录算法训练营-贪心算法-5|56. 合并区间、738. 单调递增的数字、968. 监控二叉
    56. 合并区间时间复杂度:O(nlogn)空间复杂度:O(logn),排序需要的空间开销1classSolution:2defmerge(self,intervals):3result=[]4iflen(intervals)==0:5returnresult#区间集合为空直接返回67int......
  • 124. 二叉树中的最大路径和
    二叉树中的路径被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中至多出现一次。该路径至少包含一个节点,且不一定经过根节点。路径和是路径中各节点值的总和。给你一个二叉树的根节点root,返回其最大路径和。示例1:输入:root=......
  • #yyds干货盘点# LeetCode程序员面试金典:二叉搜索树的最近公共祖先
    题目:给定一个二叉搜索树,找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树T的两个结点p、q,最近公共祖先表示为一个结点x,满足x是p、q的祖先且x的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root= [6,2......
  • 二叉树
    二叉树搜索二叉树:左边比根小,右边比根大;子树也满足这个特征。搜索二叉树还有一个特征:去走一个中序是一个升序的状态。所以搜索二叉树可以叫做二叉排序树或二叉查找树。模板不喜欢用T了,因为喜欢用K(关键字)。推荐一般用BinarySearchTree,二叉搜索树,不要用SearchTreeBinary,因为简写出......
  • 《剑指Offer》-34-二叉树中和为某一值的路径
    思路要求是从根节点开始的路径,这会比从任意节点开始的路径简单很多思路是从根节点开始遍历每一条路径,如果和没有达到目标值就继续向下遍历大于就回退,等于就返回到结果集中,可以看到这是一个回溯动作实际过程中,首先不管是等于还是大于,回退pop()操作都要执行,这样才不会影响到后......
  • 114. 二叉树展开为链表
    给你二叉树的根结点root,请你将它展开为一个单链表:展开后的单链表应该同样使用TreeNode,其中right子指针指向链表中下一个结点,而左子指针始终为null。展开后的单链表应该与二叉树先序遍历顺序相同。示例1:输入:root=[1,2,5,3,4,null,6]输出:[1,null,2,null,3,null,......
  • 剑指Offer面试题7:重建二叉树
    一、题目给定节点数为n的二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示。提示:1.vin.length== pre.length2.pre和vin 均无重复元素3.vin出现的元素均出现在 ......