精华内容
下载资源
问答
  • bootstrap table初始化方法封装,个页面初始化多个表格
    千次阅读
    2020-12-23 18:51:02
    
    /* 初始化表格*/
    var TableInit = function () {
        var oTableInit = {};
        //初始化Table
        oTableInit.Init = function (table,url,columns) {
            table.bootstrapTable($.extend({}, tableDefaults, {
                queryParams: queryParams,//参数
                responseHandler: responseHandler,
                async: true,
                url: url,
                height: '100%',
                showHeader: 'false',
                columns: columns,
                onLoadSuccess(data){
                    console.log(data.rows)
                    listTotal = data.total;
                }
            }));
        };
        return oTableInit;
    };
    
    $(function(){
         var oTable = new TableInit();
        oTable.Init($('#libList1'),'/project/getProjectList',column.columns1);
         var oTable1 = new TableInit();
        oTable1.Init($('#libList2'),'/project/getProjectList',column.columns2);
     
    })
    
    
    ###### 更新:
    $.extend({},defaults, options)
    
    这样做的目的是为了保护包默认参数。也就是defaults里面的参数。
    
    做法是将一个新的空对象({})做为$.extend的第一个参数,defaults和用户传递的参数对象紧随其后,这样做的好处是所有值被合并到这个空对象上,保护了插件里面的默认值。
     
    
    
      
     
    
    
    更多相关内容
  • 试按表(12.8.9.20.10.5.6.15.19.25)中元素的排列次序,将所以元素插入一个初始为空的二叉排序树中,使之仍是一颗二叉排序树。试画出插入完成之后的二叉排序树。 结果 解题方法:以第一个元素根节点,接下来每个...

    试按表(12.8.9.20.10.5.6.15.19.25)中元素的排列次序,将所以元素插入一个初始为空的二叉排序树中,使之仍是一颗二叉排序树。试画出插入完成之后的二叉排序树。
    结果结果
    解题方法:以第一个元素为根节点,接下来每个元素与根节点比较,小于根节点的去左子树,大于根节点的去右子树
    步骤图:
    第一步
    第三步第四步第五步第六步第七步第八步第九步第十步,结果

    展开全文
  • 二叉树的初始

    万次阅读 2015-03-12 16:26:52
    给定二叉树的初始化数据,怎样动态建立个二叉树呢? 比如我们给定这样的组数据:{ 1, 2, 3, 4, 0, 5, 6, 0, 7 }(假设0代表),则我们构建的二叉树是这样的: 1 / \ 2 3 / / \ 4 5 6 \ 7 思路分析: ...

    问题:

    给定二叉树的初始化数据,怎样动态建立一个二叉树呢?

    比如我们给定这样的一组数据:{ 1, 2, 3, 4, 0, 5, 6, 0, 7 }(假设0代表空),则我们构建的二叉树是这样的:

         1
        / \
       2   3
      /   / \
     4   5  6
      \
       7
    

    思路分析:

    我们可以使用一个队列,队首出一个元素,队未进两个元素,而这两个元素正好是这个队首元素的左右节点。

    参考代码如下:

    TreeNode* initBTree(int elements[], int size)
    {
    	if (size < 1)
    	{
    		return NULL;
    	}
    	//动态申请size大小的指针数组
    	TreeNode **nodes = new TreeNode*[size];
    	//将int数据转换为TreeNode节点
    	for (int i = 0; i < size; i++)
    	{
    		if (elements[i] == 0)
    		{
    			nodes[i] = NULL;
    		}
    		else
    		{
    			nodes[i] = new TreeNode(elements[i]);
    		}
    	}
    	queue<TreeNode*> nodeQueue;
    	nodeQueue.push(nodes[0]);
    
    	TreeNode *node;
    	int index = 1;
    	while (index < size)
    	{
    		node = nodeQueue.front();
    		nodeQueue.pop();
    		nodeQueue.push(nodes[index++]);
    		node->left = nodeQueue.back();
    		nodeQueue.push(nodes[index++]);
    		node->right = nodeQueue.back();
    	}
    	return nodes[0];
    }



    下面是一个测试代码,我们可以看看结果:

    头文件声明(tree.h):

    #pragma once
    #include <iostream>
    #include <vector>
    #include <queue>
    using namespace std;
    
    //Definition for binary tree
    struct TreeNode
    {
    	int val;
    	TreeNode *left;
    	TreeNode *right;
    	TreeNode(int x) : val(x), left(NULL), right(NULL) {}
    };
    
    //初始化一个二叉树
    TreeNode* initBTree(int elements[], int size);
    
    //树的前序遍历
    void preOrder(TreeNode *root, vector<int> &result);
    //树的中序遍历
    void inOrder(TreeNode *root, vector<int> &result);
    //树的后序遍历
    void postOrder(TreeNode *root, vector<int> &result);
    //vector的遍历
    void traverse(vector<int> nums);

    源代码实现:

    #include "tree.h"
    
    TreeNode* initBTree(int elements[], int size)
    {
    	if (size < 1)
    	{
    		return NULL;
    	}
    	//动态申请size大小的指针数组
    	TreeNode **nodes = new TreeNode*[size];
    	//将int数据转换为TreeNode节点
    	for (int i = 0; i < size; i++)
    	{
    		if (elements[i] == 0)
    		{
    			nodes[i] = NULL;
    		}
    		else
    		{
    			nodes[i] = new TreeNode(elements[i]);
    		}
    	}
    	queue<TreeNode*> nodeQueue;
    	nodeQueue.push(nodes[0]);
    
    	TreeNode *node;
    	int index = 1;
    	while (index < size)
    	{
    		node = nodeQueue.front();
    		nodeQueue.pop();
    		nodeQueue.push(nodes[index++]);
    		node->left = nodeQueue.back();
    		nodeQueue.push(nodes[index++]);
    		node->right = nodeQueue.back();
    	}
    	return nodes[0];
    }
    
    void preOrder(TreeNode *root, vector<int> &result)
    {
    	if (root)
    	{
    		result.push_back(root->val);
    		preOrder(root->left, result);
    		preOrder(root->right, result);
    	}
    }
    
    void inOrder(TreeNode *root, vector<int> &result)
    {
    	if (root)
    	{
    		inOrder(root->left, result);
    		result.push_back(root->val);
    		inOrder(root->right, result);
    	}
    }
    
    void postOrder(TreeNode *root, vector<int> &result)
    {
    	if (root)
    	{
    		postOrder(root->left, result);
    		postOrder(root->right, result);
    		result.push_back(root->val);
    	}
    }
    
    void traverse(vector<int> nums)
    {
    	vector<int>::size_type size = nums.size();
    	for (size_t i = 0; i < size; i++)
    	{
    		cout << nums[i] << ' ';
    	}
    	cout << endl;
    }
    
    int main()
    {
    	int nums[] = { 1, 2, 3, 4, 0, 5, 6, 0, 7 };
    	TreeNode *root = initBTree(nums, 9);
    	vector<int> preResult;
    	vector<int> inResult;
    	vector<int> postResult;
    	preOrder(root, preResult);
    	inOrder(root, inResult);
    	postOrder(root, postResult);
    	cout << "前序遍历的结果:" << '\n';
    	traverse(preResult);
    	cout << "中序遍历的结果:" << '\n';
    	traverse(inResult);
    	cout << "后序遍历的结果:" << '\n';
    	traverse(postResult);
    	return 0;
    }

    运行结果如下:


    展开全文
  • 文章目录单选题选择题题解编程题7-3 插入排序还是堆排序 (25分) 不会输入格式:输出格式:输入样例 1:输出样例 1:输入样例 2...下列所示的平衡二叉树中,插入关键字48后得到棵新平衡二叉树。新平衡二叉树中,关

    单选题

    题号题目答案
    1AVL树是一种平衡的二叉搜索树,树中任一结点具有下列哪一特性: 左、右子树高度差的绝对值不超过1
    2在这里插入图片描述 C
    3在下列所示的平衡二叉树中,插入关键字48后得到一棵新平衡二叉树。在新平衡二叉树中,关键字37所在结点的左、右子结点中保存的关键字分别是: 在这里插入图片描述 24、53
    412个结点的AVL树的最大深度是? 5
    5若AVL树的深度是6(空树的深度定义为-1),则该树的最少结点数是: 33
    6将 8, 9, 7, 2, 3, 5, 6, 4 顺序插入一棵初始为空的AVL树。下列句子中哪句是错的?在这里插入图片描述 C
    7将一系列数字顺序一个个插入一棵初始为空的AVL树。下面哪个系列的第一次旋转是“右-左”双旋?在这里插入图片描述 D
    8将 1, 2, 3, 6, 5, 4 顺序一个个插入一棵初始为空的AVL树,会经历下列哪些旋转? 一个“右-右”旋和两个“右-左”旋
    9在这里插入图片描述 A
    10首先将 28, 23, 54, 61, 98, 37 插入一棵初始为空的平衡二叉树(AVL树),然后马上插入下列选项中的一个键值。哪个键值将引起 RL 旋转? 70

    选择题题解

    2、如图所示
    在这里插入图片描述
    3、转的过程:

    • 插入48之后属于右左双旋转的情况,按照图示的方法先做右单旋转,再做左单旋转
    • 右单旋转:以37为轴,53顺时针旋转(向下),原本是37左孩子的48成为53的左孩子
    • 24的右孩子由53变为37
    • 左单旋转:仍然以37为轴,24逆时针旋转(向下),成为37的左孩子在这里插入图片描述
      24的左子树高度为1,右字数高度为3,属于RL型,RL型的变化就这么做的,具体RL型解释如下
      在这里插入图片描述
      具体的RL型的旋转规则,大佬说记住就可以了,哎拼命记吧。
      在这里插入图片描述
      从第四题之后都暂时不会,望各位大佬留言赐教,补充题解

    编程题

    7-3 插入排序还是堆排序 (25分) 不会

    根据维基百科的定义:

    插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。

    堆排序也是将输入分为有序和无序两部分,迭代地从无序部分找出最大元素放入有序部分。它利用了大根堆的堆顶元素最大这一特征,使得在当前无序区中选取最大元素变得简单。

    现给定原始序列和由某排序算法产生的中间序列,请你判断该算法究竟是哪种排序算法?

    输入格式:

    输入在第一行给出正整数 N (≤100);随后一行给出原始序列的 N 个整数;最后一行给出由某排序算法产生的中间序列。这里假设排序的目标序列是升序。数字间以空格分隔。

    输出格式:

    首先在第 1 行中输出Insertion Sort表示插入排序、或Heap Sort表示堆排序;然后在第 2 行中输出用该排序算法再迭代一轮的结果序列。题目保证每组测试的结果是唯一的。数字间以空格分隔,且行首尾不得有多余空格。

    输入样例 1:

    10
    3 1 2 8 7 5 9 4 6 0
    1 2 3 7 8 5 9 4 6 0
    

    输出样例 1:

    Insertion Sort
    1 2 3 5 7 8 9 4 6 0
    

    输入样例 2:

    10
    3 1 2 8 7 5 9 4 6 0
    6 4 5 1 0 3 2 7 8 9
    

    输出样例 2:

    Heap Sort
    5 4 3 1 0 2 6 7 8 9
    

    代码

    #include<bits/stdc++.h>
    using namespace std;
    # define ll long long
    # define inf 0x3f3f3f3f
    const int maxn = 2e4+100;
    int a[maxn];
    int b[maxn];
    void cal(int l,int r){
        int i=l,j=i*2;
        while(j<=r){
            if(j+1<=r&&b[j]<b[j+1])
                j++;
            if(b[j]>b[i]){
                swap(b[i],b[j]);
                i=j;
                j=i*2;
            }
            else
                break;
        }
    }
    int main()
    {
        int n;
        scanf("%d",&n);
        for(int i=1; i<=n; i++)
        {
            scanf("%d",&a[i]);
        }
        for(int i=1; i<=n; i++)
        {
            scanf("%d",&b[i]);
        }
        int flag=-1;
        int i;
        for( i=1; i<=n; i++)
        {
            if(i==1)
                continue;
            else if(b[i]>=b[i-1])
                continue;
            else
            {
                flag=i;
                break;
            }
        }
        if(flag!=2)
        {
            sort(b+1,b+flag+1);
            printf("Insertion Sort\n");
            for(int i=1; i<=n; i++)
            {
                if(i==1)
                    printf("%d",b[i]);
                else
                    printf(" %d",b[i]);
            }
            printf("\n");
        }
        else
        {
            printf("Heap Sort\n");
            int pos=n;
            while(pos>=2&&b[pos]>b[pos-1])
                pos--;
                swap(b[1],b[pos]);
            cal(1,pos-1);
            for(int i=1; i<=n; i++)
            {
                if(i==1)
                    printf("%d",b[i]);
                else
                    printf(" %d",b[i]);
            }
            printf("\n");
        }
        return 0;
    }
    

    7-4 愿天下有情人都是失散多年的兄妹 (25分)

    呵呵。大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人、父母、祖父母、曾祖父母、高祖父母)则不可通婚。本题就请你帮助一对有情人判断一下,他们究竟是否可以成婚?

    输入格式:

    输入第一行给出一个正整数N(2 ≤ N ≤10​4​​ ),随后N行,每行按以下格式给出一个人的信息:

    本人ID 性别 父亲ID 母亲ID

    其中ID是5位数字,每人不同;性别M代表男性、F代表女性。如果某人的父亲或母亲已经不可考,则相应的ID位置上标记为-1。

    接下来给出一个正整数K,随后K行,每行给出一对有情人的ID,其间以空格分隔。

    注意:题目保证两个人是同辈,每人只有一个性别,并且血缘关系网中没有乱伦或隔辈成婚的情况。

    输出格式:

    对每一对有情人,判断他们的关系是否可以通婚:如果两人是同性,输出Never Mind;如果是异性并且关系出了五服,输出Yes;如果异性关系未出五服,输出No

    输入样例:

    24
    00001 M 01111 -1
    00002 F 02222 03333
    00003 M 02222 03333
    00004 F 04444 03333
    00005 M 04444 05555
    00006 F 04444 05555
    00007 F 06666 07777
    00008 M 06666 07777
    00009 M 00001 00002
    00010 M 00003 00006
    00011 F 00005 00007
    00012 F 00008 08888
    00013 F 00009 00011
    00014 M 00010 09999
    00015 M 00010 09999
    00016 M 10000 00012
    00017 F -1 00012
    00018 F 11000 00013
    00019 F 11100 00018
    00020 F 00015 11110
    00021 M 11100 00020
    00022 M 00016 -1
    00023 M 10012 00017
    00024 M 00022 10013
    9
    00021 00024
    00019 00024
    00011 00012
    00022 00018
    00001 00004
    00013 00016
    00017 00015
    00019 00021
    00010 00011
    

    输出样例:

    Never Mind
    Yes
    Never Mind
    No
    Yes
    No
    Yes
    No
    No
    

    代码

    #include<iostream>
    #include<cstring>
    #include<vector>
    using namespace std;
    const int Inf = 1e5 + 5;
    vector<int> vec[Inf];		// 存关系图 
    bool vis[Inf];				// 标记五服以内的亲属 
    char sex[Inf];				// 记录性别 
    bool flag;					// 标记情侣是否为近亲 
    void Dfs(int x, int num)	// num表示第几代,从0开始 
    {
    	if (num >= 4)			// 超过五代直接退出 
    		return;
    	for (int i = 0; i < vec[x].size(); i++)
    	{
    		if (!vis[vec[x][i]])
    		{
    			vis[vec[x][i]] = 1;	// 标记出现的人 
    			Dfs(vec[x][i], num + 1);
    		}
    		else
    			flag = 1;		//五服之内出现一样的人 
    	}
    }
    int main()
    {
    	int T;
    	cin >> T;
    	while (T--)
    	{
    		int t, fa, ma;
    		char ch;
    		scanf("%d ", &t);
    		sex[t] = getchar();
    		scanf(" %d %d", &fa, &ma);
    		if (fa != -1)		// -1不用保存,避免数据处理不当导致数组越界 
    		{
    			vec[t].push_back(fa); // 保存双亲 
    			sex[fa] = 'M';	// 记录父亲性别 
    		}
    		if (ma != -1)
    		{
    			vec[t].push_back(ma);
    			sex[ma] = 'F';
    		}
    	}
    	cin >> T;
    	while (T--)
    	{
    		int x, y;
    		scanf("%d %d", &x, &y);
    		if (sex[x] == sex[y])	// 同性 
    			cout << "Never Mind" << endl;
    		else
    		{
    			memset(vis, 0, sizeof(vis));	// 每次都初始化一下,每个人的五服亲戚不一样
    			vis[x] = 1;
    			vis[y] = 1;
    			flag = 0;
    			Dfs(x, 0);
    			Dfs(y, 0);
    			if (flag)	// 被标记过说明这两人为近亲 
    				cout << "No" << endl;
    			else
    				cout << "Yes" << endl;
    		}
    	}
    	return 0;
    }
    
    
    展开全文
  • 2022年考研数据结构_5 树

    万次阅读 2020-12-28 16:40:36
    树5.1 概念5.2 二叉树5.2.1 树的定义和特征深度5.2.2 树的遍历1) 给出中后,输出前序5.3 树,森林5.3.1 树的存储结构5.3.2 森林与二叉树的转换1) 树转换二叉树2) 森林转换二叉树3) 二叉树转换树4) 二叉树转换...
  • =0)个结点的有限集合,该集合或者空集(称为二叉树),或者由个根结点和两棵互不相交的、分别称为根结点的左子树和右子树组成。如图如图,每个结点中最多拥有个左结点和个右结点,并没有多余的结点,这是...
  • 如果给出了遍历二叉树的前序序列和中序序列,则可以构造出唯一的一颗二叉树。 基本要求 已知一棵二叉树的前序序列和中序序列,试设计完成下列任务的一个算法: (1).构造一颗二叉树 (2).证明构造正确(即分拨...
  • Git是什么? Git是款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。...如果说什么要选择Git,可以说因为Git高端大气上档次,实现了免费开源易用的版本控制功能,并有
  • AVL又称二叉平衡树,是会自平衡的二叉搜索树,左孩子比自己小,右孩子比自己大,关键在于他的每个节点左右孩子高度差绝对值不会超过1 实际上我上网查了好几次AVL的详解,关于里面怎么平衡,单左,单右,左右双旋...
  • 本文代码实现基本按照《数据结构》课本目录顺序,外加大量的复杂算法实现,篇文章足够。能换你个收藏了吧?
  •  C# 6.0 语法出来前,属性的赋初始值使用get;set;虽然已经相对于最原始的写法简洁了非常多,但是还不够,还不够,还不够。。。今天刚好一直想着前几天朋友问我的有关属性赋初始值的问题,便自己试了一下,...
  • 二叉搜索树又称二叉排序树,它或者是一颗空树,或者是具有以下性质的二叉树: 若它的左子树不为空,则左子树上所有结点的值都小于根结点的值 若它的右子树不为空,则右子树上所有结点的值都大于根结点的值 它的...
  • C语言扫雷游戏之:初始化雷的分布

    千次阅读 2022-03-30 16:36:57
    雷区当中,一格既可能是数字(表达周边的总雷数),也可能它就是一颗雷,还有可能它是一个空位。那么我做如下约定: 0:表示空位 数字1-8:表示这一格周边的总雷数(以9宫格区域,最多存在8颗雷) 数字9:...
  • 用c语言创建一颗二叉树,用递归方法实现对其进行先序、中序和后序遍历的操作。 先上代码#include #include /*(1)创建一颗二叉树 ,用递归方法实现对其进行先序、 中序和后序遍历的操作 */ //创建二叉树结构体 ...
  • 因为浪费空间,遍历时需要叶子节点左右都NULL, 中序遍历可以节约节点空间 typedef char ElemType; //线索存储标志位 //Link(0)表示指向左右孩子的指针 //Thread(1)表示指向前驱后继的线索 typedef enum{...
  • 二叉查找树 各种操作及其初始

    千次阅读 2013-10-27 09:02:38
    1、序  详细实现了二叉查找树的各种操作:插入结点、构造二叉树、删除结点、查找、 查找最大值、查找最小值、查找指定结点的... 它或者是树;或者是具有下列性质的二叉树: (1)若左子树不,则左子树上
  • PTA 7-1 是否完全二叉搜索树 (30分)

    千次阅读 2020-04-29 14:55:15
    系列给定数字顺序插入初始为空的二叉搜索树(定义左子树键值大,右子树键值小),你需要判断最后的树是否棵完全二叉树,并且给出其层序遍历的结果。 输入格式: 输入第行给出个不超过20的正整数N;...
  • 解析后面: 2-5写错了,选D 解析: x2-1: 要注意这个二叉搜索树还是个完全二叉树,只有二叉树时最大值才一定叶结点上,且中位值一定要注意,肯定是根结点或根的左子树上 x2-2:之前就做过,画...
  • 超硬核!数据结构学霸笔记,考试面试吹牛就靠它

    万次阅读 多人点赞 2021-03-26 11:11:21
    (作为函数参数时不需要初始化) 声明个引用后,不能再作为另变量的引用。 3。不能建立引用数组。 1.2函数调用: 其实还是通过函数来理解了一下引用 void Myswap1(int a,int b) { int c = a; a = b; b = c;...
  • 用shell实现个酷炫的圣诞树!
  • 若将关键字1,2,3,4,5,6,7 依次插入到初始为空的平衡二叉树 T 中,则 T 中平衡因子 0 的分支结点的个数是( )。 从图中可以知道,平衡因子0的结点有:4,2,6 共三个。 这个题目其实考的就是如何...
  • 二叉树指针个数的理解

    千次阅读 多人点赞 2020-11-08 12:58:24
    二叉树使用链式存储时,每个结点都有个指针,或者为空或者指向子结点。 指针的个数n+1是众所周知的事,虽然不论哪种证明方法都仅仅是恒等式变形的结果,但去分析等式两边的意义是十分有助于理解关系本质...
  • 如何用Qt绘制一颗好看的二叉树

    千次阅读 多人点赞 2018-10-29 23:32:04
    最近学习数据结构二叉树,通过C++控制台界面已实现了二叉树的前序创建,层次创建和前序加中序确定一颗二叉树三种创建方式。那么问题就来了,一颗已经创建好的二叉树,如何能以图形化的界面显示出来呢?   ...
  • * 求一颗二叉排序树查找成功和失败情况下的平均查找长度 * 实验目的: * 掌握二叉排序树的查找过程及其算法设计 * 实验内容: * 设计程序,对于给定的关键字序列,构造一颗二叉排序树bt, * 并求bt查找成功和失败...
  • 老规矩,开篇点题,今天写了二叉树,整理总结一下要写二叉树,先画出一颗来 二叉树我是用链表来实现的1、每一个节点包含数据,左指针和右指针,分别指向左孩子和右孩子//创建节点类型 //节点中有数据,有指针 ...
  • 系列给定数字顺序插入初始为空的二叉搜索树(定义左子树键值大,右子树键值小),你需要判断最后的树是否棵完全二叉树,并且给出其层序遍历的结果。 输入格式: 输入第行给出个不超过20的正整数N...
  • 二叉树 习题集

    千次阅读 2018-10-05 23:26:13
    二叉树 习题集一 1、若要惟一地确定一棵二叉树,只需知道该二叉树的(D) A.前序序列 B....C....D....有两种情况不能确定一棵树: (1)只知道先序序列或只...二叉排序树(Binary Sort Tree)或者是一颗空树;或者是具有以...
  • 平衡二叉树(AVL)的4种插入调整过程

    千次阅读 2019-07-10 22:06:54
    插入中为了保证二叉排序树的性能,规定插入和删除二叉树结点时,要保证任意结点的左、右子树的高度差的绝对数值不超过1,这样的二叉树被称为平衡二叉树(Balanced Binary Tree),简称平衡树(AVL)。 平衡二叉树的...
  • 之前大家介绍了一些倾斜摄影相机背后的技术(可以翻看我的第篇文章),文章分析了倾斜摄影作业流程的痛点,解释了什么光学镜头还会影响到软件的三建模,最后是通过什么技术手段去解决这个问题。本期我们再来...
  • 实习准备的数据结构(11)-- 图论算法 集锦

    千次阅读 多人点赞 2021-02-15 13:51:30
    文章目录讲个故事图的相关定义定义:有向图、无向图、权重、活用图定义二:完全图、连通图、连通分量、生成树定义三:邻接表、邻接矩阵定义四:DFS、BFS定义五:Prim 算法、Kruskal 算法、Dijkstra 算法存储结构...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,295
精华内容 11,718
关键字:

在一颗初始为空的