平衡二叉树思路分析及代码实现

LCR 176. 判断是否为平衡二叉树 通过递归计算树的高度并检查每个节点的平衡性,我们能够高效地判断一棵二叉树是否为平衡二叉树。这种方法具有简洁的实现和较好的性能,时间复杂度为 O(n),适用于大多数场景。 阅读详情

基本介绍

  1. 平衡二叉树也叫平衡二叉搜索树(Self-balancing binary searchtree)又被称为AVL树,可以保证查询效率较高。
  2. 具有以下特点:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。平衡二又树的常用实现方法有红黑树、AVL、替罪羊树、Treap、伸展树等。
  3. 举例说明:
    在这里插入图片描述

应用案例(一)——单旋转(左旋转)

  • 以数列{4,3,6,5,7,8}为例构建一颗平衡二叉树

问题: 当插入8时,rightHeight()-leftHeight()>1成立,此时,不再是一颗AVL树了.
怎么处理 ------ 进行左旋转
1.创建一个新的节点newNode(以4这个值创建),创建一个新的节点,值等于当前根节点的值
//把新节点的左子树设置为当前节点的左子树
2.newNode.left=left
//把新节点的右子树设置为当前节点的右子树的左子树
3.newNode.right =right.left;
//把当前节点的值换为右子节点的值
4.value=right.value;
//把当前节点的右子树设置成右子树的右子树
5.right=right.right;
//把当前节点的左子树设置为新节点
6.left=newLeft;
在这里插入图片描述

应用案例(二)——单旋转(右旋转)

  • 以数列{10,12,8,9,6}为例构建一颗平衡二叉树

问题: 当插入6时,leftHeight()-rightHeight()>1成立,此时,不再是一颗AVL树了。
怎么处理 ------ 进行右旋转
就是降低左子树的高度。这里是将9这个节点,通过右旋转,到右子树。
1.创建一个新的节点newNode(以10这个值创建)创建一个新的节点,值等于当前根节点的值
//把新节点的右子树设置了当前节点的右子树
2.newNode.right=right
//把新节点的左子树设置为当前节点的左子树的右子树
3.newNode.left =left.right;
//把当前节点的值换为左子节点的值
4.value=left.value;
/把当前节点的左子树设置成左子树的左子树
5.left=left.left;
///把当前节点的右子树设置为新节点
6.right=newLeft;
在这里插入图片描述

应用案例(三)——双旋转

  • 以数列{10, 11, 7, 6, 8, 9 }为例构建一颗平衡二叉树

问题: 当插入9时,经过左旋转或者右旋转后依旧不是一颗AVL树了。
分析

  1. 当符号右旋转的条件时
  2. 如果它的左子树的右子树高度大于它的左子树的高度
  3. 先对当前这个结点的左节点进行左旋转
  4. 在对当前结点进行右旋转的操作即可
    在这里插入图片描述

代码实现

package com.avl;

public class AVLTreeDemo {

	public static void main(String[] args) {
		// int[] arr = { 4, 3, 6, 5, 7, 8 };
		// int[] arr = { 10, 12, 8, 9, 7, 6 };
		int[] arr = { 10, 11, 7, 6, 8, 9 };
		// 创建AVLTree对象
		AVLTree avlTree = new AVLTree();
		// 添加结点
		for (int i = 0; i < arr.length; i++) {
			avlTree.add(new Node(arr[i]));
		}

		// 遍历
		System.out.println("中序遍历");
		avlTree.infixOrder();

		System.out.println("【平衡处理】");
		System.out.println("树的高度=" + avlTree.getRoot().height());
		System.out.println("树的左子树高度=" + avlTree.getRoot().leftHeight());
		System.out.println("树的右子树高度=" + avlTree.getRoot().rightHeight());

	}

}

// 创建AVL树
class AVLTree {
	private Node root;

	public Node getRoot() {
		return root;
	}

	// 查找要所处的结点
	public Node search(int value) {
		if (root == null) {
			return null;
		} else {
			return root.search(value);
		}
	}

	// 查找父节点
	public Node searchParent(int value) {
		if (root == null) {
			return null;
		} else {
			return root.searchParent(value);
		}
	}

	/**
	 * @Method_Name:delRightTreeMin
	 * @Description:
	 * @param node
	 *            传入的结点(当做二叉排序树的根节点)
	 * @return int 以node为根节点的二叉排序树的最小结点的值
	 */
	public int delRightTreeMin(Node node) {
		Node target = node;
		// 循环查找左节点,就会找到最小值
		while (target.left != null) {
			target = target.left;
		}
		// 这是target就指向最小结点
		// 删除最小结点
		delNode(target.value);
		return target.value;

	}

	// 删除结点
	public void delNode(int value) {
		if (root == null) {
			return;
		} else {
			// 1.先找到要删除的结点
			Node targetNode = search(value);
			// 没有找到结点
			if (targetNode == null) {
				return;
			}
			// 如果当前二叉排序树只有一个节点
			if (root.left == null && root.right == null) {
				root = null;
				return;
			}

			// 找到targetNode的父节点
			Node parent = searchParent(value);
			// 如果要删除的是叶子结点
			if (targetNode.left == null && targetNode.right == null) {
				// 判断targetNode是父节点的左子节点还是右子节点
				if (parent.left != null && parent.left.value == value) {// 是左子节点
					parent.left = null;
				} else if (parent.right != null && parent.right.value == value) {// 是右子节点
					parent.right = null;
				}
			} else if (targetNode.left != null && targetNode.right != null) {// 删除有两颗子树的结点
				int minVal = delRightTreeMin(targetNode.right);
				targetNode.value = minVal;

			} else { // 删除只有一颗子树的结点
				// 如果要删除的结点有左子节点
				if (targetNode.left != null) {
					if (parent != null) {
						// 如果targetNode是parent的左子节点
						if (parent.left.value == value) {
							parent.left = targetNode.left;
						} else {// targetNode是parent的右子节点
							parent.right = targetNode.left;
						}
					} else {
						root = targetNode.left;
					}
				} else {// 要删除的结点有右子节点
					if (parent != null) {
						// 如果targetNode是parent的左子节点
						if (parent.left.value == value) {
							parent.left = targetNode.right;
						} else {// 如果targetNode是parent的右子节点
							parent.right = targetNode.right;
						}
					} else {
						root = targetNode.right;
					}
				}
			}
		}
	}

	// 添加节点
	public void add(Node node) {
		if (root == null) {
			root = node;// 如果root为空直接让root指向node
		} else {
			root.add(node);
		}
	}

	// 中序遍历
	public void infixOrder() {
		if (root != null) {
			root.infixOrder();
		} else {
			System.out.println("二叉排序树为空");
		}
	}
}

// 创建节点
class Node {
	int value;
	Node left;
	Node right;

	public Node(int value) {
		this.value = value;
	}

	// 返回左子树的高度
	public int leftHeight() {
		if (left == null) {
			return 0;
		}
		return left.height();
	}

	// 返回右子树的高度
	public int rightHeight() {
		if (right == null) {
			return 0;
		}
		return right.height();
	}

	// 返回当前节点为根节点的高度
	public int height() {
		return Math.max(left == null ? 0 : left.height(), right == null ? 0 : right.height()) + 1;
	}

	// 左旋转方法
	private void leftRotate() {
		// 创建新节点,以当前根节点创建
		Node newNode = new Node(value);
		// 把新节点的左子树设置为当前节点的左子树
		newNode.left = left;
		// 把新节点的右子树设置为当前节点的右子树的左子树
		newNode.right = right.left;
		// 把当前节点的值换为右子节点的值
		value = right.value;
		// 把当前节点的右子树设置成右子树的右子树
		right = right.right;
		// 把当前节点的左子树设置为新节点
		left = newNode;
	}

	// 右旋转
	private void rightRotate() {
		Node newNode = new Node(value);
		newNode.right = right;
		newNode.left = left.right;
		value = left.value;
		left = left.left;
		right = newNode;

	}

	// 查找要删除的结点
	/**
	 * @Method_Name:search
	 * @Description:查找要删除的结点
	 * @param value
	 *            要删除结点的值
	 * @return Node
	 */
	public Node search(int value) {
		if (value == this.value) {// 找到该节点
			return this;
		} else if (value < this.value) {// 如果查找的值小于当前节点,向左子树递归查找
			if (this.left == null) {
				return null;
			}
			return this.left.search(value);
		} else {// 如果查找的值不小于当前节点,向右子树递归查找
			if (this.right == null) {
				return null;
			}
			return this.right.search(value);
		}
	}

	// 查找要删除结点的父结点
	/**
	 * @Method_Name:searchParent
	 * @Description:查找要删除结点的父结点
	 * @param value
	 *            要找到的结点的值
	 * @return Node 返回结点要删除的父结点,没有就返回null
	 */
	public Node searchParent(int value) {
		// 如果当前节点就是要删除结点的父结点,就返回
		if ((this.left != null && this.left.value == value) || (this.right != null && this.right.value == value)) {
			return this;
		} else {
			// 如果查找的值小于当前节点的值,并且当前节点的左子结点不为空
			if (value < this.value && this.left != null) {
				return this.left.searchParent(value);// 向左子树递归查找
			} else if (value >= this.value && this.right != null) {
				return this.right.searchParent(value);// 向右子树递归
			} else {
				return null;// 有找到父结点
			}
		}
	}

	@Override
	public String toString() {
		return "Node [value=" + value + "]";
	}

	// 添加节点
	// 递归添加,需要满足二叉排序树的要求
	public void add(Node node) {
		if (node == null) {
			return;
		}

		// 判断传入结点的值和当前子树的根节点值的关系
		if (node.value < this.value) {
			if (this.left == null) {
				this.left = node;
			} else {
				// 向左子树添加
				this.left.add(node);
			}
		} else {// 添加的大于当前节点的值
			if (this.right == null) {
				this.right = node;
			} else {
				// 向右子树添加
				this.right.add(node);
			}
		}
		// 当添加完一个节点后,(右子树的高度-左子树的高度)>1 ,左旋转
		if (rightHeight() - leftHeight() > 1) {
			// 如果它的右子树的左子树的高度大于它的右子树的右子树的高度
			if (right != null && right.leftHeight() > right.rightHeight()) {
				// 先对右子结点进行右旋转
				right.rightRotate();
				// 然后在对当前结点进行左旋转
				leftRotate();// 左旋转..
			} else {
				leftRotate();// 左旋转
			}
			return;// 必须要
		}
		// 当添加完一个节点后,(左子树的高度-右子树的高度)>1 ,右旋转
		if (leftHeight() - rightHeight() > 1) {
			// 如果它的左子树的右子树高度大于它的左子树的高度
			if (left != null && left.rightHeight() > left.leftHeight()) {
				// 先对当前这个结点的左节点进行左旋转
				left.leftRotate();
				// 再对当前结点进行右旋转
				rightRotate();// 右旋转
			} else {
				// 进行右旋转
				rightHeight();
			}
		}

	}

	// 中序遍历
	public void infixOrder() {
		if (this.left != null) {
			this.left.infixOrder();
		}
		System.out.println(this);
		if (this.right != null) {
			this.right.infixOrder();
		}
	}
}
平衡二叉树——力扣110 题目描述解题思路递归的顺序可以是自顶向下或者自底向上。 阅读详情

相关推荐

平衡二叉树完整代码(创建,插入,旋转)

该套代码是博主在学习数据结构的平衡二叉树时总结整理的一套平衡二叉树的代码,包括平衡二叉树的创建,插入,旋转,遍历等一套完善的代码,亲自测试过,代码保证是对的。

二叉树的递归套路——平衡二叉树

二叉树的递归套路 可以解决面试中绝大多数(95%)的二叉树问题,尤其是树型dp问题 本质是利用递归遍历二叉树的便利性,就是一个结点会到达三次 补充一点,刷题中小技巧多如牛毛,大技巧就两个:二叉树的递归套路、暴力递归改动态规划的套路,这是总的指导思想。 所谓二叉树的递归套路就是在树上做动态规划,什么是动态规划呢?动态规划就是用时间换空间的方式。 二叉树的递归套路 1)假设以X节点为头,假设可以向X左树和X右树要任何信息 2)在上一步的假设下,讨论以X为头节点的树,得到答案的可能性(最重要) 3)列出所有可能性

Harrison的学习博客 1094

使用MKL+Eigen求解稀疏矩阵方程组

问题:求解Ax=b的解,其中,A为大型稀疏矩阵,长和宽分别为1500^2。 一般思路: (1)A为对称正定矩阵,对A使用cholesky分解。 (2)A为对称不定矩阵,使用LDL‘分解,即: PAP'=LDL' 其中,L为单位下三角矩阵,D由阶数为1或者2的对角块构成,P是置换矩阵。 (3)不对称矩阵:LU分解。 (4)长方形矩阵(长...

薛晓伟 3445

平衡二叉树思路分析及实现(图解+代码同步实现)

文章目录平衡二叉树思路分析及实现(图解+代码同步)解剖图解代码测试总结 平衡二叉树思路分析及实现(图解+代码同步) 解剖 ​ 需要明确的一点是 平衡二叉树本质就是二叉排序树只是它比二叉排序树多了一个性质: 任意节点左右子树的高度的绝对值之差 < = 1 ​ 这是平衡的基础,必须记住! 下面是针对两大类(4种情况)下 插入节点导致不平衡的时所进行的平衡调整代码实现 图解 右单旋转 当前节点的左子树高度 - 右子数高度 > 1 且没有其他情况 ​ 说明: 当插入节点

浮-沉 805

安捷伦示波器实战指南:从基础操作到精准触发

本文详细介绍了安捷伦示波器的基础操作与高级功能,包括精准触发配置、波形分析和常见问题排查。通过实战技巧和优化建议,帮助工程师快速掌握示波器的核心功能,提升调试效率。特别适合电子工程师和测试技术人员参考使用。

weixin_30839881的博客 135

ccproxy 6.61 注册机(纯绿/傻瓜/真正去除线程限制)

导读:   软件介绍   1、 CCPROXY 6.61 注册机(纯绿/傻瓜/真正去除线程限制)   ***前言,这次的升级官方改动不大,据说只是为了不被某些软件当病毒***   附件包中解压即免安装版,CcREGTOOLFF.exe为注册机。   本人继续向大家隆重推出《CCPROXY6.61哎呀……破解版》   还是那个提示:   在此之前,本人还是那句老话想提示大家,CCPROXY是

i53nd的专栏 1万+

平衡二叉树及实现

平衡二叉树(AVL树)又称为平衡二叉搜索树,可以保证高效的查询。平衡二叉树是一棵空树或者左右两个子树的高度差的绝对值不超过1并且左右两个子树都是一棵平衡二叉树。平衡二叉树的常用实现方法有红黑树、AVL、替罪羊树、Treap、伸展树等。把二叉树上的节点的左子树深度减去右子树深度的值称为平衡因子(BF)。

快乐江小鱼的博客 384

ABAP HANA BP主数据批导

SAPhana官方推荐的创建bp主数据的类是CL_MD_BP_MAINTAIN 客户的创建具体示例代码如下: DATA: LT_RETURN_MAP TYPE MDG_BS_BP_MSGMAP_T. DATA: LS_RETURN_MAP TYPE MDG_BS_BP_MSGMAP. DATA: LS_MESSAGE_MAP TYPE MDG_BS_BP_MSGMAP_KEY. DATA: LT_DATA TYPE CVIS_EI_EXTERN_.

IamRunjiang的博客 4143

数据结构(6)树形结构——平衡二叉树(JAVA代码实现)

平衡二叉树的概念,平很二叉树的LL、RR、RL、LR旋转,以及JAVA版本的AVL树的实现。

BugMan的博客 1810

如何用python开发“跳一跳”游戏【附源码】

jump_start_time = pygame.time.get_ticks() # 记录跳跃开始时间。jump_duration = current_time - jump_start_time # 计算跳跃持续时间。current_time = pygame.time.get_ticks() # 获取当前时间。jump_velocity = -15 # 设置跳跃的初始速度。# 如果小球跳跃结束,重置跳跃状态。# 根据跳跃持续时间计算跳跃高度。# 移除超出屏幕的障碍物。

helloshili2011的博客 2495

【SPI-NAND】Linux驱动移植实战:从规格书解析到内核适配

本文详细解析了SPI-NAND Flash的Linux驱动移植实战,从规格书关键参数提取到内核MTD子系统适配。内容涵盖存储结构解析、命令集映射、设备树配置及厂商驱动开发,特别强调ECC校验、坏块管理等NAND特性处理,并提供了性能优化与测试验证的实用技巧。

weixin_27076351的博客 351

平衡二叉树详解(附带完整代码)

由于10的左孩子的高度为2,右孩子高度为0,平衡因子为2,二叉树不平衡,需要进行旋转操作,如何旋转?由于10的右孩子的高度为2,左孩子高度为0,平衡因子为 -2,二叉树不平衡,需要进行旋转操作。先将9节点进行左旋操作,让8节点成为9的左孩子;先将9节点进行右旋操作,10节点成为9的右孩子;由于平衡因子不平衡,所以引入了旋转的概念,来使得二叉树平衡。当添加的新节点成为最小不平衡树的。当添加的新节点成为最小不平衡树的。当添加的新节点成为最小不平衡树的。规划可知,7应该成为新的根节点。规划可知8节点应为根节点;

ylh的博客 1547

SDA 还是 SDI:SAP HANA 数据虚拟化与数据集成的取舍、组合与实战

结论先放在前面:SDA 面向数据虚拟化与联邦查询,强调不落地、不复制、按需实时访问;SDI 面向数据集成与复制,强调抽取、转换、装载与近实时增量同步。两者共享 Remote Source 与 Adapter 的理念,但侧重点与运行时组件明显不同。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 583

【数据结构(十·树结构的实际应用)】平衡二叉树(5)

看一个案例(说明二叉排序树可能的问题)给一个数列{1,2,3,4,5,6},要求创建一颗二叉排序树(BST), 并分析问题所在上图中,BST 存在的问题分析:(1)左子树全部为空,从形式上看,更像一个单链表(2)插入速度没有影响(3)查询速度明显降低(因为需要依次比较),不能发挥 BST的优势,因为每次还需要比较左子树,其查询速度比单链表还慢平衡二叉树(AVL)

weixin_44883789的博客 259

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的农作物害虫检测系统(深度学习模型+UI界面+训练数据集)

随着人工智能技术在农业领域的深入应用,基于深度学习的害虫检测系统已成为智慧农业的重要组成部分。本文详细介绍了一种基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的农作物害虫检测系统,涵盖算法原理、数据集构建、模型训练、系统实现及完整代码。该系统能够实时检测并识别多种农作物害虫,为农业生产提供精准的病虫害监测解决方案。

YOLO 273

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

二叉树 | 110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和 222.完全二叉树的节点个数

【代码】代码随想录算法训练营第15天 | 110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和 222.完全二叉树的节点个数。

Lchiyu的博客 330

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

平衡二叉树例题_平衡二叉树专题

力扣关于平衡二叉树的题目还是有一些的,并且都非常经典,推荐大家练习。今天给大家精选了 4 道题,如果你彻底搞明白了这几道题,碰到其他的平衡二叉树的题目应该不至于没有思路。当你领会了我的思路之后, 建议再找几个题目练手,巩固一下学习成果。110. 平衡二叉树(简单)最简单的莫过于判断一个树是否为平衡二叉树了,我们来看下。题目描述给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树...

weixin_39846191的博客 1944

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【剑指Offer刷题系列】判断平衡二叉树

输入一棵二叉树的根节点,判断该树是不是 平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过 1,那么它就是一棵平衡二叉树。输入: 输出: 解释:如下图所示的二叉树是平衡的: 示例 2: 输入: 输出: 解释:如下图所示的二叉树不是平衡的,因为某些节点的左右子树深度相差超过了 1: 提示 原题链接:https://leetcode.cn/problems/ping-heng-er-cha-shu-lcof/description/ 及 https://leetcode-cn.com/probl

weixin_44329069的博客 902

每日一题-判断是否是平衡二叉树

判断是否是二叉树

zxjiaya的博客 1124

代码随想录算法训练营第十七天| ● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404.左叶子之和

● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404.左叶子之和

Zhen_JIANG的博客 512

第一次个人项目【词频统计】——需求分析,代码规范,设计思路

需求分析 由于程序需要在Windows平台和Linux平台都能运行,因此对代码的可移植性有一定的要求 由于需要对文件夹进行遍历,因此数据量相对较大,需要选择合适的数据结构,在此项目中,树和哈希表都是可供选择的数据结构 由于对字符串的处理很多,因此需要选择一种合适的字符串表达方式,char* or string? 代码规范   核心要求:用代码做到“卒章显志”的作用,代码...

weixin_30909575的博客 454

【Offer】[55-2] 【平衡二叉树】

题目描述 思路分析 测试用例 Java代码 代码链接 题目描述   输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左、右子树的深度相差不超过1,那么它就是一棵平衡二叉树。例如,图中的二叉树就是一棵平衡二叉树。  牛客网刷题地址 思路分析   在求二叉树的深度的过程中判断左右子树之间的高度差,如果高度差大于1 ,就返回...

diaolin2115的博客 173

二叉排序树和平衡二叉树

首先介绍概念;二叉排序树指的是左值子树小于根节点小于右子树左子树结点值< 根结点值< 右子树结点值这就使得在中序遍历的时候可以得到一个有序地序列解析来介绍一下二叉树的查找操作解释一下代码,其实就是采用了一个while循环首先构建一个结构体BSTnode 然后在查找函数里面调用一下首先建立的BST(二叉排序树)接下来重点关注一下while循环,当树不为空的时候且关键字不相同的时候,借助二叉排序树左<中<右的特性来进行循环条件的设立。当最终满足key相等的时候返回T。

m0_64845434的博客 878

判断平衡二叉树的方法

LeetCode 第110题 平衡二叉树 做题记录题目描述我的解法思路修改后的对应Java代码复杂度分析迭代法思路 题目描述 我的解法 思路 先尝试用递归法解决 确定参数和返回值 返回值:true 或 false 参数:因为要比较每个节点两个子树的高度,所以参数是左节点和右节点 确定终止条件 如果左右节点都为空 返回ture 如果左、右节点只有一个为空,则判断另一个节点的左右子节点是都为空,若存在不为空的,返回false,否则返回treu 确定单层的操作逻辑 将当前节点的左右子节输入递归函数进行判

SOS团成员A 403

算法训练15-1判断平衡二叉树+二叉树的所有路径

*//平衡二叉树->高度->root节点的左节点和右节点是否是高度差<=1->后序遍历->迭代法。//1.左/右节点本身就是不平衡二叉树。//遍历输出path里的各个节点的值。主要考察高度,后序遍历->需要递归法->递归法三步走。//1.输入参数,和输出。,返回所有从根节点到叶子节点的路径。//1.前序遍历添加中。给你一个二叉树的根节点。

xiyujiang的博客 690

2025年-G11-Lc85-110.平衡二叉树-java版

二叉树中求高度的常见模板要记住,树节点类型,传入节点node。

zsysingapore的博客 253
上一篇: 测试题
下一篇: 图的创建和代码实现
lu_long
博客等级 码龄8年 11粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值