生成二叉树和红黑树的helloworld(3)

http://bbs.youkuaiyun.com/topics/340042324

搜遍了google搜索的所有文章
第14页终于让哥找到了这个方法:

/*
这是一个在字符环境中,用ASCII码打印二叉树形状的算法。
在Linux控制台下写的例题,在DOS中稍有点乱。
采用层次遍法。
算法拙劣,仅供初学者做练习,(本人也是初学者,自学数据结构,刚好学到这二叉树这一章,
半路出家,基础差有点吃力头大,搞几个二叉的例题,却不知道其构造形状,
想调用图形API做个美观点的,却有点偏离本章的学习目的,只好用字符打印,
linux环境中打印的还可以,DOS中有点不稳定,如果您有更好的算法一定不吝赐教。
我的QQ:137241638 mail:hnflcp@139.com
*/
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 100

//Pstart是二叉树根结点在一行中的位置,一行最能打印124个字符,取其1/2。
//如果你的屏不够宽的话,可以输出文本文件里, aa.exe>>aa.txt
#define Pstart 62

typedef struct node //二叉树存储结构
{
int key;
int data;
struct node *lchild,
*rchild;
}BTNode;
typedef struct pnode //为打印二叉树建了一个结构。
{
int key; //关键字数据1
int data; //关键字数据2
struct pnode *lchild, //左孩子
*rchlid, //右孩子
*parent; //父节点
int lrflag, //标记本节点是左孩子(等于0时),还是右孩子(等于1时)
space, //存储本节点打印位置
level; //存储本节点所在层次。
}PBTNode;

/*建立二叉树。
用括号表示法表示二叉树字符串,创建二叉树。
*/
BTNode* CreateBTNode(char *s)
{
char ch;
BTNode *p=NULL,
*b=NULL,
*ps[MaxSize];
int top=-1,
tag=-1;
ch=*s;
while(ch)
{
switch(ch)
{
case '(':ps[++top]=p;tag=1;break;
case ',':tag=2;break;
case ')':top--;break;
default:
p=(BTNode*)malloc(sizeof(BTNode));
p->data=ch;
p->lchild=p->rchild=NULL;
if(b==NULL)
b=p;
else
{
switch(tag)
{
case 1:ps[top]->lchild=p;break;
case 2:ps[top]->rchild=p;break;
}
}
}
ch=*(++s);
}
return b;
}

//用适号表示法打印二叉树。
void DispBTNode(BTNode *b)
{
if(b!=NULL)
{
printf("%c",b->data);
if(b->lchild!=NULL||b->rchild!=NULL)
{
printf("(");
DispBTNode(b->lchild);
if(b->rchild!=NULL)printf(",");
DispBTNode(b->rchild);
printf(")");
}
}
}
int BTNodeHeight(BTNode *b)
{
int lchildh,rchildh;
if(b==NULL)return 0;
else
{
lchildh=BTNodeHeight(b->lchild);
rchildh=BTNodeHeight(b->rchild);
return (lchildh>rchildh)?(lchildh+1):(rchildh+1);
}
}

/*建立一个二叉树打印结点的信息,
只被int CreatePBTNode(BTNode *b,PBTNode *pqu[])调用*/
void SetPBTNodeInfo(BTNode *b,PBTNode *parent,PBTNode *pb,int level,int lrflag)
{
int f=3;
pb->data=b->data;
pb->key =b->key;
pb->parent=parent;
pb->level=level;
pb->lrflag=lrflag;
pb->space=-1;
}

/*用层次遍历法,BTNode结构存储的二叉树转换为,PBTNode结构的二叉树*/
int CreatePBTNode(BTNode *b,PBTNode *pqu[])
{
BTNode *p;
BTNode *qu[MaxSize];
int front=-1,
rear=-1;
rear++;
qu[rear]=b;
pqu[rear]=(PBTNode*)malloc(sizeof(PBTNode));
SetPBTNodeInfo(b,NULL,pqu[rear],1,-1);
while(rear!=front)
{
front++;
p=qu[front];
if(p->lchild!=NULL)
{
rear++;
qu[rear]=p->lchild;
pqu[rear]=(PBTNode*)malloc(sizeof(PBTNode));
SetPBTNodeInfo(p->lchild,pqu[front],pqu[rear],pqu[front]->level+1,0);
}
if(p->rchild!=NULL)
{
rear++;
qu[rear]=p->rchild;
pqu[rear]=(PBTNode*)malloc(sizeof(PBTNode));
SetPBTNodeInfo(p->rchild,pqu[front],pqu[rear],pqu[front]->level+1,1);
}
}
return rear;
}

//打印一层结点,及该层结点与父结点的连线路径。
void PBTNodePrint(PBTNode *pb[],int n,int h)
{
int l=-1,
r=0,
i,j,k,
end;
char c;
PBTNode *p;
if(n<=0||h<=0)
{
return;
}
else if(n==1)
{
for(i=0;i<pb[0]->space;i++)
printf(" ");
printf("%c",pb[0]->data);
printf("\n");
return;
}
h=h-pb[0]->level+2;
for(k=0;k<h;k++)
{
j=0;
l--;
r++;

for(i=0;i<n;i++)//打印线条
{
p=pb[i];
end=(p->lrflag==0)?l:r;
end+=p->parent->space;
for(;j<end;j++)
printf(" ");
c=(p->lrflag==0)?'/':'\\';
printf("%c",c);
}
printf("\n");
}
for(i=0;i<n;i++)//计算本层结点打印位置
{
p=pb[i];
if(p->lrflag==0)
p->space=p->parent->space+l;
else
p->space=p->parent->space+r;
}
for(i=0,j=0;i<n;i++)//打印关键字数据
{
p=pb[i];
for(;j<p->space;j++)
printf(" ");
printf("%c",p->data);
}
printf("\n");
}
//循环打印所有层的数据
void DispBTree(BTNode *b)
{
int n,i,j,high,
level;
PBTNode *p;
PBTNode *pqu[MaxSize];
PBTNode *levelpqu[MaxSize];
n=CreatePBTNode(b,pqu);
high=BTNodeHeight(b);
j=0;
level=1;
pqu[0]->space=Pstart;
for(i=0;i<=n;i++)
{
p=pqu[i];
if(p->level==level)
{
levelpqu[j]=p;
j++;
}
else
{
PBTNodePrint(levelpqu,j,high);
level=p->level;
j=0;
levelpqu[j]=p;
j++;
}
}
PBTNodePrint(levelpqu,j,high);

}
void main()
{
int iDepth=0,
iWidth=0,
iCount=0;
char *str1="A(B(D,E(H,X(J,K(L,M(T,Y))))),C(F,G(X,I)))";
char *str2="A(B(D(,G)),C(E,F))";
BTNode *b=CreateBTNode(str1);
DispBTNode(b);printf("\n");
iDepth=BTNodeHeight(b);
printf("Depth:%d\n",iDepth);
DispBTree(b);
}



[img]http://dl.iteye.com/upload/attachment/0083/4378/d708818a-1c27-39e9-90fa-5cb3079539f5.jpg[/img]
数据结构与算法课程设计实战指南:从理论到项目实现的九大核心模块解析 数据结构与算法是计算机科学的核心基础,它研究数据的组织、存储和操作方法,旨在提升程序运行效率。其核心原理在于通过抽象数据类型(ADT)将现实问题映射为逻辑结构(如线性表、树、图),并设计特定算法(如查找、排序、遍历)进行操作。掌握数据结构与算法的技术价值在于能够优化程序性能,降低资源消耗,是解决大规模数据处理、高性能计算和复杂系统设计等工程问题的基石。在应用场景上,从数据库索引(B+树)、网络路由(图算法)、文件压缩(哈夫曼编码)到内存管理(动态分配算法),无处不在。本文聚焦于**数据结构课程设计**这一实 阅读详情

相关推荐

【Web服务器运维】基于Nginx与Keepalived的高可用负载均衡系统部署:实现故障自动切换与虚拟IP管理

内容概要:本文详细介绍了如何通过Nginx与Keepalived实现高可用的负载均衡架构。首先讲解了Nginx的安装部署流程,包括依赖环境的准备、源码解压编译、启动及配置重载;接着介绍了Keepalived的安装步骤及其服务管理方式;重点在于通过配置Keepalived的主备节点(MASTER/BACKUP),结合VRRP协议和虚拟IP(VIP)实现故障自动切换,并通过自定义脚本nginx_check.sh实时检测Nginx运行状态,确保服务高可用;最后补充了在云环境中因组播限制导致心跳不稳定时,应改用单播(unicast)方式进行通信的解决方案。; 适合人群:具备Linux系统操作基础、熟悉网络基础知识,从事运维、DevOps或Web服务部署的技术人员,尤其是工作1-3年的工程师。; 使用场景及目标:①搭建高可用的Web负载均衡系统,避免单点故障;②掌握Nginx与Keepalived协同工作的原理与实战配置方法;③应用于生产环境中提升服务稳定性与容灾能力。; 阅读建议:学习时应结合实验环境动手操作,重点关注keepalived.conf配置差异与nginx_check.sh脚本逻辑,理解VRRP机制及单播替代组播的实际应用场景,注意根据实际网络环境调整IP与网卡参数。

Day_15 链表体系结构和红黑树

LinkedHashSet LinkedHashSet<E> : 元素不重复,元素无索引,元素存取有序 LinkedHashSet<E> 是 HashSet<E> 的子类; 数据结构之树结构 树结构常识 红黑树结构 红黑树添加元素的规律(了解) TreeSet TreeSet<E> : 元素不重复,元素可以排序(元素存取无序),元素无索引 常用的对象类型默认排序规则: 整数存储在TreeSet集合中默认升序!! 字符串存在TreeSet集

lbw18的博客 879

三电平Buck直流变换器双闭环、单闭环、开环仿真【附参考文献】(Simulink仿真实现)

内容概要:本文档系统介绍了三电平Buck直流变换器在Simulink环境下的开环、单闭环与双闭环控制系统的建模仿真方法,涵盖系统建模、控制策略设计及动态性能对比分析。通过构建不同控制结构,深入探讨电压调节精度、系统响应速度、抗干扰能力及稳定性差异,重点剖析双闭环控制中电压外环与电流内环的协同作用机制,揭示其在抑制输出纹波、提升负载适应性方面的优势,帮助读者掌握多电平DC-DC变换器的核心控制原理与工程实现技术;文档还提供了详实的仿真参数设置与参考文献,便于理论验证与实践复现。; 适合人群:电力电子、自动化、电气工程及其相关专业的高校本科生、研究生、科研人员,以及从事电源系统、新能源变换器开发的工程技术人员。; 使用场景及目标:①作为高校电力电子课程的教学案例,辅助学生理解Buck变换器多层次控制策略的设计思路与性能差异;②为科研项目中高效直流变换系统的仿真研究提供可复用的技术模板;③指导工业界在高精度电源设计中优化控制器参数,提升系统动态响应与稳定性。; 阅读建议:建议结合Simulink仿真模型同步操作,对照文档逐步搭建各控制结构,重点观察不同闭环配置下输出电压的瞬态与稳态表现,深入理解PI参数整定、环路耦合影响及系统频域特性的关联性,从而全面提升对电力电子系统控制设计的综合把握能力。

BTree、红黑树、哈希算法分析、哈希表源码解析

第一章 BTree、红黑树 1.1 BTree 二叉树:binary tree ,是每个结点不超过2的有序树(tree) 。 简单的理解,就是一种类似于我们生活中树的结构,只不过每个结点上都最多只能有两个子结点。 二叉树是每个节点最多有两个子树的树结构。顶上的叫根结点,两边被称作“左子树”和“右子树”。 如图: 1.2 红黑树 我们要说的是二叉树的一种比较有意思的叫做红黑树,红黑树本身就是一颗二叉查找树,将节点插入后,该树仍然是一颗二叉查找树。 《2020最新Java基础精讲视频教程和学习路线!》 如图:

weixin_46699878的博客 626

从DMD芯片到3D视觉革命:揭秘DLP工业投影光机的核心技术

本文深入解析了DMD芯片在DLP工业投影光机中的核心技术应用,揭示了其如何通过3D结构光技术实现微米级精度。从DMD芯片的机械设计到工业级光机的特殊优化,再到光固化3D打印和系统集成,展现了DLP技术在工业自动化和智能制造中的革命性作用。

weixin_29048775的博客 513

【技术实践指南】Python解析FactSet Revere供应链数据:构建企业级断裂与重构监测指标

本文提供了一份企业级Python实践指南,详细解析如何利用FactSet Revere供应链数据库,构建供应链断裂与重构监测指标。内容涵盖数据清洗、关系对筛选、时间序列处理及核心指标(断裂、恢复、转移)的工程化实现,旨在帮助数据工程师与分析师搭建自动化、可解释的供应链风险监控系统。

weixin_29051811的博客 930

二叉树非递归先序和后序遍历

仅供参考 btree.cpp #include <stdio.h> #include <malloc.h> #define MaxSize 100 typedef char ElemType; typedef struct node { ElemType data; //数据元素 struct node *lchild; //指向左孩子结点 struct no...

weixin_44303677的博客 232

【CIC-IDS数据集+机器学习】实现网络流量异常检测

本项目基于CIC-IDS数据集,使用多种机器学习算法实现网络流量异常检测系统。项目采用了完整的机器学习工作流程,从数据预处理到模型部署,实现了高精度的网络入侵检测。

XiaoMu_001的博客 1935

生成二叉树和红黑树的helloworld(1)

参考的这个视频 视频讲得有点烂,代码错误很多,诶,不过ptree似乎挺好,挺直观的 递归都能变成栈? 中序遍历,先序遍历,后续遍历都是栈,层序遍历用的队列 bst数的,增删 [code="java"] [root@VM_253_237_tlinux ~/tree]# cat bst.c #include #include #include #define N 1...

走在左边 168

Cesium.Ray 知识详解,示例代码

Cesium.Ray 是 CesiumJS 中用于表示三维空间中无限射线的核心类,广泛应用于地理信息系统(GIS)、三维可视化和碰撞检测等场景。射线由起点(origin)和方向向量(direction)定义,数学表达式为 ( P(t) = \text{origin} + t \times \text{direction} )。核心属性包括起点和方向向量,常用方法包括射线与平面的交点计算、根据距离获取射线上的点等。在 Cesium 中,Cesium.Ray 常用于地形碰撞检测、鼠标点选对象和雷达探测模拟等场景

大剑师兰特的GIS世界 425

后摄模块辐射超标整改

某行车记录仪在EMI测试中出现辐射超标问题,通过模块剥离法定位到后摄模块的Ethernet数据线为噪声源。深入检查发现TYPE-C延长线屏蔽层未有效接地,形成辐射泄漏通道。整改措施包括加强屏蔽层360°接地、使用导电布改善连接处屏蔽等,最终使辐射降至EN55032 Class B限值以内。案例揭示了高速信号延长线中屏蔽连续性的重要性,建议设计阶段就重视连接器屏蔽设计和共模干扰抑制。

硬核科技 255

生成二叉树和红黑树的helloworld(2)

[code="java"] [root@VM_253_237_tlinux ~/tree/print]# cat ctree.h typedef struct node *link; struct node{ int item;link l,r; }; void print_tree(struct node * root); [/code] [code="ja...

走在左边 132

《Python全栈系列教程》专栏介绍及文章汇总

《Python全栈系列教程》专栏介绍及文章汇总

孤寒者的博客 71万+

生成二叉树和红黑树的helloworld(4)

红黑树的打印 [code="java"] #include #include #define MaxSize 100 #define Pstart 62 #define N 10 //typedef struct node *link; typedef struct node { int key; int item; struct ...

走在左边 140

从 OPEN CURSOR 到 SELECT INTO TABLE:把 ABAP 数据读取的底层机制与性能差异讲透

ABAP数据库访问性能优化关键点 摘要:ABAP程序性能的核心在于数据读取方式的选择。本文分析了三种常见数据库访问方式的技术原理:显式游标(CURSOR)、SELECT-ENDSELECT循环和SELECT INTO TABLE。重点揭示了数据从数据库到应用服务器的传输机制,包括OPEN/REOPEN与FETCH操作、Array Fetch批量传输原理以及SAP游标缓存机制。通过VBAK表的性能测试数据对比,证明了不同场景下最优访问方式的选择依据:大数据量时显式游标性能优势明显,而SELECT INTO T

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

大疆FPGA/芯片开发工程师(A卷)笔试题(含详解)

大疆芯片开发岗A卷 一、单选题 1.下列关于多bit数据跨时钟域的处理思路,错误的有   A、发送方给出数据,接收方用本地时钟同步两拍再使用   B、发送方把数据写到异步fifo,接收方从异步fifo里读出   C、对于连续变化的信号,发送方转为格雷码发送,接收方收到后再转为二进制   D、发送方给出数据,发送方给出握手请求,接收方收到后回复,发送方撤销数据 2.对12.918做无损定点化,需要的最小位宽是多少位,位宽选择11位时的量化误差是多少   A、12位,0.0118   B、13位,0.0039

Mr.翟的博客 2万+

生成二叉树和红黑树的helloworld(5) (转)

参考http://blog.youkuaiyun.com/manuscola/article/details/8635525 https://github.com/killinux/rbtree https://github.com/manuscola/rbtree [code="java"] #include "rbtree.h" #include #include #include ...

走在左边 143

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

libevent(1)之基础概述

libevent是一个功能强大的跨平台事件驱动库,在高性能网络编程领域有着广泛的应用。它最初由Niels Provos等人开发,最早可以追溯到2000年。经过多年的发展演进,目前已经成为了业内公认的优秀开源项目之一。 作为一个专注于事件驱动和异步I/O的编程库,libevent帮助开发者以一种高效而统一的方式处理各种类型的事件,比如网络I/O、定时器、信号等。它能够自动利用操作系统提供的最佳I/O多路复用机制,如Linux上的epoll、BSD上的kqueue等,从而实现了可移植性和高性能。

梅花香自苦寒来,宝剑锋从磨砺出。 1744

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【算法笔记】第六章STL模板

1 STL分类: 1.1 容器:string、vector、list、deque、set、map 序列式容器:强调值的排序,序列式容器中的每个元素均有固定的位置。 关联式容器:二叉树结构,各元素之间没有 严格的物理上的顺序关系 1.1.1 string 2020.07.20 char* 和char[]: https://blog.youkuaiyun.com/u012611878/article/details/78291036 赋值:重载运算符号 = | str.assign(); 拼

helloworld0529的博客 199

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【Java】Java 基础系统学习笔记

全篇包含大量可执行代码示例,适合作为Java入门学习的系统参考资料。本文系统整理了Java基础核心知识点,涵盖语法基础、流程控制、数组、方法、面向对象和字符串处理等关键内容。主要内容包括: 语法基础:HelloWorld程序、命名规范(小驼峰/大驼峰)、标识符规则、8种基本数据类型及其转换规则。 流程控制:if-else语句(含最佳实践)、switch语句(支持类型及新特性)、三种循环结构及break/continue用法。 数组操作:数组定义与遍历、System.arraycopy

weixin_44288277的博客 242

常用数据结构总结

小明:最近常有人讨论数据结构和算法,听他们讨论时总是感觉晕乎好多都不懂,可以普及一下吗? 老师:难得你这么爱学习,我们今天就普及一下数据结构的基础知识。 数据结构与算法是程序设计的两大基础,是否熟练掌握可以在一定程度上证明你是否有良好的逻辑思维。我们先看一下常用数据结构和算法的整体内容。 1.数据的逻辑结构 集合结构:结构中的数据元素之间除了同属于一个集合的关系外,无任何其他关系。 ...

HelloWorld搬运工 2033

Java零基础到实战:环境搭建、核心语法、算法与面试全攻略

Java作为一门面向对象的编程语言,其核心在于通过封装、继承和多态三大特性来构建复杂的软件系统。理解其底层原理,如JVM内存模型和垃圾回收机制,是编写高效、稳定程序的基础。掌握集合框架(如ArrayList、HashMap)和并发编程(如synchronized、volatile)等技术,能有效提升系统性能和可靠性。这些知识不仅是工程实践的关键,也是应对大厂面试的必备技能。本文以Java学习路线为蓝本,结合斯坦福经典练习题和力扣算法题,系统讲解从环境搭建、核心语法到算法思维和面试准备的完整闭环,帮助初学者构

weixin_33907511的博客 373

Java零基础教程:语法、算法与面试实战融合学习路径解析

Java作为企业级应用开发的核心语言,其学习路径的设计直接影响开发者的技能构建与求职竞争力。传统学习模式常将语法、数据结构和面试准备割裂,导致理论与实践脱节。本文以黑马程序员《Java零基础视频教程_上部》为例,解析如何通过**斯坦福大学经典作业**和**力扣算法题**的有机融合,构建“语法-算法-面试”三位一体的复合学习路径。该教程将算法思维前置,在讲解数组、集合等基础数据结构时,直接引入力扣题目作为实战案例,例如通过双指针法解决“移除元素”问题,帮助学习者在掌握语法的同时锻炼解题思维。这种设计不仅平滑了

weixin_30387799的博客 398

网易Java校招笔试复盘:核心考点拆解与高分攻略

Java后端开发岗位的校招笔试,本质上是对候选人系统性知识结构与工程实践能力的综合检验。从Java基础语法、集合框架、泛型与异常,到并发编程、JVM内存模型、Spring Boot工程化,再到高频算法如快速排序与动态规划,每一类考点都对应着真实业务场景中的核心能力。理解原理比死记结论更重要,例如HashMap的扩容机制、volatile的可见性、线程池的执行策略,都需要从源码层面去把握。通过复盘网易等大厂的笔试真题,可以反推出岗位能力模型,从而制定高效的复习主线。本文结合工程实践与常见环境问题,给出了从复习

weixin_34341117的博客 665

Java开发者求职指南:从零到月薪12K的实战学习路线与面试策略

Java作为企业级应用开发的核心语言,其生态体系庞大,涵盖了从基础语法到分布式架构的完整技术栈。理解Java虚拟机(JVM)的内存模型、垃圾回收机制以及集合框架的底层原理,是构建高性能、高并发应用的基础。随着微服务架构的普及,Spring Boot以其自动配置和快速开发能力,成为Java后端开发的事实标准,结合Spring Cloud或Dubbo等组件,能够有效构建可扩展的分布式系统。掌握MySQL索引优化、Redis缓存应用以及Kafka等消息队列,对于保障系统数据一致性与高可用性至关重要。这些技术的核心

weixin_34192816的博客 383

C++入门指南:从环境搭建到STL应用,掌握编程底层思维

编程语言是计算机科学的基础工具,其核心在于理解计算机如何执行指令和管理数据。C++作为一门接近底层的编译型语言,通过直接操作内存和CPU指令,能够帮助开发者建立对计算机系统原理的深刻认知。这种底层理解是学习高级语言特性的基础,例如Java的垃圾回收机制和Python的动态类型系统。在工程实践中,掌握C++意味着能够编写高性能、资源可控的应用程序,尤其在系统编程、游戏开发和嵌入式领域具有不可替代的价值。通过系统学习C++,开发者不仅能熟练使用标准模板库(STL)中的容器和算法,还能理解面向对象编程的封装、继承

weixin_34220179的博客 471
上一篇: 生成二叉树和红黑树的helloworld(2)
下一篇: 树莓派网络配置
linux内核控
博客等级 码龄19年 41粉丝 638原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值