首页 > 其他分享 >二叉 查找 树

二叉 查找 树

时间:2024-09-19 11:23:27浏览次数:1  
标签:左子 TreeNode self 二叉 查找 节点

目录


Why need Binary Tree?

有时候,我们希望数据按照特定顺序排列。
比如:

  • 想要按字母顺序排列人名;
  • 按价格顺序排列产品;
  • ...

image

树也是节点结构

image

规定

  • 二叉树的每个节点的子节点数量都是0、1、2;
  • 每个节点最多有一个左子节点和右子节点
  • 一个节点的左子树的值都 小于 节点本身,
  • 一个节点的右子树的值都 大于 节点本身;
  • 这一规律适用于所有节点。

术语

  • 层级
    image

  • 平衡
    image

树的创建

class TreeNode:
	def _init_(self, val, left=None, right=None):
		self.value = val
		self.leftChild = left
		self.rightChild = right

构建一棵简单的树:

node1 = TreeNode(25)
node2 = TreeNode(75)
root = TreeNode(50, node1, node2)

image

树的查找

给你一颗二叉树,
image

需要查找61,

查找步骤:

  1. 算法开始时,根节点就是第一个“当前节点”;
    image
    检查当前节点的值,如果时这个值,那就找到了。

  2. 如果要找到值小于当前节点值,那么就在其左子树中继续查找。

  3. 如果要找的值大于当前节点的值,那么就在其右子树中继续查找。

image
image

查找效率

每一步排除了大约一半的剩余节点,因此,二叉查找树的查找需要O(log N)时间。

标签:左子,TreeNode,self,二叉,查找,节点
From: https://www.cnblogs.com/mysticbinary/p/18373347

相关文章

  • C++ 逆向之 main 函数的查找
    在整个程序的逆向分析过程中,寻找main函数是逆向分析过程的第一步,程序的主要逻辑从这里展开。这里面涉及到两个概念:用户入口(UserEntryPoint)和应用程序入口(ApplicationEntryPoint)。用户入口用户入口是开发者编写的用于程序开始的函数。对于大多数C/C++程序而言,这个入......
  • 二叉搜索树的概念与实现
    目录一.二叉搜索树的概念 二. 二叉搜索树的实现 1.二叉搜索树的插入2.二叉搜索树的查找3.二叉搜索树的删除三.二叉搜索树的性能分析1.时间复杂度2.空间复杂度四.二叉搜索树的实现代码五.二叉搜索树key和key/value使用场景1.key搜索场景2.key/value......
  • Day18 二叉树part08| LeetCode 669. 修剪二叉搜索树 , 108.将有序数组转换为二叉搜索树
    669.修剪二叉搜索树669.修剪二叉搜索树classSolution{publicTreeNodetrimBST(TreeNoderoot,intlow,inthigh){if(root==null)returnnull;//处理节点值<low的情况:当前节点及其左子树的所有节点都不在范围内,继续在其右子树上修......
  • 【数据结构】二叉树的遍历
    堆的应用堆排列堆排序即利用堆的思想来进行排序,总共分为两个步骤:建堆升序:建大堆降序:建小堆利用堆删除思想来进行排序建堆和堆删除中都用到了向下调整,因此掌握了向下调整,就可以完成堆排序。voidHeapSort(int*a,intn){ //a数组直接建堆O(N) for(inti=......
  • 南沙C++信奥老师解一本通题:1337:【例3-2】单词查找树
    ​【题目描述】在进行文法分析的时候,通常需要检测一个单词是否在我们的单词列表里。为了提高查找和定位的速度,通常都画出与单词列表所对应的单词查找树,其特点如下:1.根结点不包含字母,除根结点外每一个结点都仅包含一个大写英文字母;2.从根结点到某一结点,路径上经过的字母依次连起......
  • C#——LINQ to XML(使用 Descendants 方法查找单个子代)
    xml位于命名空间中时查找staticvoidMain(string[]args){XElementroot=XElement.Parse(@"<aw:Rootxmlns:aw='http://www.efun.com'><aw:Child1><aw:GrandChild1>GC1Value</aw:GrandChild1>&l......
  • C#——LINQ to XML(内容快速查找)
    staticvoidMain(string[]args){XElementpurchaseOrder=XElement.Load("Contacts.xml");stringpartNos=(string)(fromiteminpurchaseOrder.Descendants("City")......
  • 【每日一题】LeetCode 2332.坐上公交的最晚时间(数组、双指针、二分查找、排序)
    【每日一题】LeetCode2332.坐上公交的最晚时间(数组、双指针、二分查找、排序)题目描述给你一个下标从0开始长度为n的整数数组buses,其中buses[i]表示第i辆公交车的出发时间。同时给你一个下标从0开始长度为m的整数数组passengers,其中passengers[j]表示第......
  • 数据结构(二叉树)练习题————考前必备合集
    今天在力扣和牛客网上找了一下题,下面附上题目链接,大家先做题再看答案1.检查两颗树是否相同。100.相同的树-力扣(LeetCode)2.另一颗树的子树。572.另一棵树的子树-力扣(LeetCode)3.翻转二叉树。226.翻转二叉树-力扣(LeetCode)4.判断一颗二叉树是否是平衡二叉树。110.......
  • 代码随想录算法训练营第一天|704二分查找 27移除数组 977.有序数组的平方
    704二分查找给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例1:输入:nums=[-1,0,3,5,9,12],target=9输出:4解释:9出现在nums中并且下标为4示例 2:输......