3.8求二叉树中节点的最大距离

二叉树中最远的两个结点的距离 解法一:求出每个结点作为根结点时的最远距离 struct BinTreeNode { int _data; BinTreeNode* _left; BinTreeNode* _right; BinTreeNode(int data = 0) :_data(data), _left(NULL), _right(NULL) {} }; int DepthBin(BinTreeNode* 阅读详情

题目:

写一个程序求一棵二叉树中相距最远的两个节点之间的距离。

这里写图片描述

粗箭头的边表示最长距离。

分析:

相距最远的两个节点,一定是两个叶子节点,或者是一个叶子节点到它的根节点(单枝树)。

我们来考虑相距最远的两个节点是两个叶子节点的情况。

对于任意一个节点,以该节点为根,假设这个根有k个孩子节点,那么相距最远的两个节点U和V之间的路径与这个根节点的关系有两种情况。

1.若路径经过根节点,那么节点U和V属于两个不同的子树。那么就有U和V都是它们所在子树到根节点最远的节点。

2.若路径不经过根节点:

这里写图片描述

那么节点U和V一定属于根节点的k个子树之一。同时满足,它们是子树中相距最远的两个节点。

此时问题就能转化成在子树上的解,用动态规划,自底向上。
树R有k棵子树
设第k棵子树中相距最远的两个节点: Uk和Vk。
d(Uk,Vk)为子树k的最大距离。
假设Uk为子树k中到子树k的根节点Rk的距离最长的节点。
那么其到树的根节点R的距离定义为d(Uk,R)。
选出d(Ui,R)(1≤i≤k)中最大的两个值max1,max2,那么经过根节点R的最长路径为max1+max2+1。
所以树R中相距最远的两个节点的距离为:
max{d(U1,V1),d(U2,V2)…,d(Uk,Vk),max1+max2+1}。

代码:

#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<stack>
using namespace std;
struct TreeNode{
    char val;
    TreeNode* left;
    TreeNode* right;
    int maxLenLeft;//左子树到父亲节点的最大长度
    int maxLenRight;
    TreeNode(char x) :val(x), left(NULL), right(NULL), maxLenLeft(0), maxLenRight(0){

    }
};

void createBinaryTree(TreeNode* &root){
    char ch;
    cin >> ch;
    if (ch == '#'){
        return;
    }
    root = new TreeNode(ch);
    createBinaryTree(root->left);
    createBinaryTree(root->right);
}
//递归
void findMaxLen(TreeNode* root,int &maxLen){
    if (root != NULL){
        findMaxLen(root->left,maxLen);
        findMaxLen(root->right,maxLen);
        if (root->left != NULL){
            root->maxLenLeft = max(root->left->maxLenLeft + 1, root->left->maxLenRight + 1);
        }
        if (root->right != NULL){
            root->maxLenRight = max(root->right->maxLenLeft + 1, root->right->maxLenRight + 1);
        }
        maxLen = max(maxLen,root->maxLenLeft+root->maxLenRight+1);
    }
}
//非递归
void findMaxLen_Nonrecursive(TreeNode* root,int &maxLen){
    stack<TreeNode*> s;
    TreeNode* cur = root;
    TreeNode* pre = NULL;
    while (cur != NULL || !s.empty()){
        while (cur != NULL){
            s.push(cur);
            cur = cur->left;
        }
        cur = s.top();
        //如果当前节点的右孩子为空,或者右孩子被访问过,那么访问当前节点
        if (cur->right == NULL || cur->right == pre){
            if (cur->left != NULL){
                cur->maxLenLeft = max(cur->left->maxLenLeft+1,cur->left->maxLenRight+1);
            }
            if (cur->right != NULL){
                cur->maxLenRight = max(cur->right->maxLenLeft+1,cur->right->maxLenRight+1);
            }
            maxLen = max(maxLen,cur->maxLenLeft+cur->maxLenRight+1);
            s.pop();
            pre = cur;
            cur = NULL;
        }
        else{
            cur = cur->right;
        }
    }
}
1740 找到二叉树中的距离 题目描述: 给定一棵二叉树的根节点 root 以及两个整数 p 和 q ,返回该二叉树中值为 p 的结点与值为 q 的结点间的 距离 。 两个结点间的 距离 就是从一个结点到另一个结点的路径上边的数目。 示例 1: 输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 0 输出:3 解释:在 5 和 0 之间有 3 条边:5-3-1-0 示例 2: 输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 7 输 阅读详情

相关推荐

求二叉树中最远的两个节点的距离

求二叉树中最远的两个节点的距离短短的代码中其实涉及到了三道题目: 利用已知序列递归的建一棵二叉树 递归的求一棵树的深度 求二叉树中距离最远的两个节点的距离:利用递归求树的深度的思想,在其中加入一个最大距离的引用的参数,利用了引用参数的特性,即可求得最大距离,比较简单,下面列出代码及图示; 给出两组测试用例的图示://代码实现#include<iostream> #include<cassert> u

John的博客 5481

LeetCode题解(1740):找到二叉树中的距离(Python)

题目:原题链接(中等) 标签:树、二叉树、深度优先搜索、广度优先搜索 解法 时间复杂度 空间复杂度 执行用时 Ans 1 (Python) O(N)O(N)O(N) O(N)O(N)O(N) 108ms (47.50%) Ans 2 (Python) Ans 3 (Python) 解法一: class Solution: def findDistance(self, root: TreeNode, p: int, q: int) -> int:

长行 935

编程之美 3.8 :求二叉树中节点最大的距离

题干 如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点之间的距离。(P241) 我的解答 没看答案前我的想法就是收集所有的叶子节点,然后将计算每对叶子节点的距离,找出距离最大的。显然距离最大的两个节点必然在叶子节点,或者一个根节点、一个是叶子节点。为什么说显然,我想是从图中观察分析的出的吧

zy825316的专栏 1029

二叉树中相距最远的两个节点之间的距离

2015年微软校招面试中的一道题目,在一棵二叉树中,找出相距最远的两个节点之间的距离,函数返回距离值(提示:递归)

Kay的博客 5166

关于RS485通讯TVS器件选择的经验

先说经验结论 如果你的RS485用于频繁热拔插, 比如作为手持终端使用, 且手持器与目标板非隔离, 那么使用6.8CA可能是更好的选择.因为有热拔插会产生浪涌, 而且在非隔离的场合有些工业设备接地也是无法保障的.对于使用场景较为单一的, 点对点或点对多场合. 可以使用最大峰值脉冲电流较小的SM712.这是在长期的产品设计中得到的经验. 仅供参考 一. TVS的工作原理和作用 瞬态电压抑制二极管 ...

qq_20163075的博客 6509

PMF5.0计算

EPA PMF5.0 计算步骤

nuistsy的博客 4533

编程之美3.8 求二叉树中节点的最大距离

题目: 如果把二叉树看成一个图,父子节点之间的连线看成是双向的,定义“距离”为两个节点之间边的个数。 求一颗二叉树中相距最远的两个节点之间的距离 分析: 二叉树中距离最远距离的情况出现在:1.根节点到叶子节点。2.叶子节点到另一叶子节点 代码如下: public class TreeDistance { public static int manlen=0; public stat

kario_reina的专栏 716

国产麒麟系统中的PaddleOCR离线绿色部署:高效安全的文字识别新纪元

摘要:本文详细介绍了PaddleOCR在银河麒麟V10SP1系统上的离线部署方案。通过Conda虚拟环境隔离依赖,采用离线包安装方式实现无网络部署,支持80+语言识别。重点讲解了模型量化剪枝优化、多线程处理等性能调优技巧,并提供了完整的OCR识别代码示例。该方案具有数据本地化处理的安全优势,适用于医疗票据数字化等对隐私要求严格的场景,同时解决了模型加载失败、内存不足等常见问题。

墨夶的博客 1227

编程之美3.8:求二叉树中节点的最大距离

如果把二叉树看成一个图,父子节点之间的连线看成是双向的,定义“距离”为两个节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点之间的距离。 1 分析 二叉树中节点的最大距离必定是两个叶子节点的距离。求某个子树的节点的最大距离,有三种情况:1.两个叶子节点都出现在左子树;2.两个叶子节点都出现在右子树;3.一个叶子节点在左子树,一个叶子节点在右子树。只要求得三种情况的最大值,结果就是...

u010325193的博客 401

PCL SVD分解求变换矩阵【2026最新版】

该算例使用奇异矩阵分解来求变换矩阵,输入的是同名点坐标输出的是变换矩阵。博客长期更新,本文最近一次更新时间为:2026年5月10日。

点云侠的博客 36万+

复习单片机:动态数码管(1 数码管介绍+2 74HC245 和 74HC138 芯片介绍+3 硬件设计+4 软件设计+5 实验现象)

复习单片机:动态数码管(1 数码管介绍+2 74HC245 和 74HC138 芯片介绍+3 硬件设计+4 软件设计+5 实验现象)

wo12369874的博客 1700

3.8 求二叉树中节点的最大距离

题目: 把二叉树看成一个图,父子节点之间的连线看成是双向的,定义“距离”为两个节点之间的边数。 求一颗二叉树中的两个节点之间的距离的最大值。 方法一:用书上写的方法: 代码: struct node { node *left; node *right; int nMaxLeft; int nMaxRight; cha

u010470972的专栏 748

基于应用谱减法进行语音去噪的算法

在上述代码中首先通过读取语音信号和噪声信号,将两个信号都转换为频域信号,然后计算出语音信号在各频率下的功率谱和噪声信号在各频率下的功率谱,并基于此计算信噪比,接着根据信噪比计算出阈值,并将低于阈值的能量对应的频段进行清零操作,最终实现去噪处理,最后将处理后的信号转换回时域信号。该算法采用谱减法进行降噪处理,能有效地去除语音信号中的噪声,但是在实际应用中,该方法也存在一些问题,如会对语音信号的高频部分产生影响,所以需要在应用过程中进行适当的调整。

weixin_50547796的博客 192

编程之美读书笔记_3.8 求二叉树中节点的最大距离

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <! /* Style

flyinghearts的专栏 4037

Jetson系列目标检测及推流

使用硬件编码,gstreamer推rtsp流至平台

xiao__run的博客 2710

防护装备穿戴检查:基于YOLOv8与UI界面的深度学习应用

通过结合YOLOv8模型与UI界面,本系统实现了防护装备穿戴检查的自动化。该系统能够快速识别工作人员是否正确佩戴了所需的防护装备,帮助提高安全管理水平。未来,随着技术的发展,防护装备穿戴检查系统将在更多领域得到应用,如工业现场、建筑工地等,实现更加精确和高效的实时监控。

YOLO 354

《编程之美》 3.8 求二叉树中节点的最大距离

问题定义 如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点之间的距离。 书上的解法 书中对这个问题的分析是很清楚的,我尝试用自己的方式简短覆述。 计算一个二叉树的最大距离有两个情况: 情况A: 路径经过左子树的最深节点,通过根节点,再到右子树的最深节点。情况B: 路径不穿过根节点,而是

Will Mu 的专栏 684

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

[编程之美3.8]求二叉树节点的最大距离

问题描述:如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义“距离”为两个节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点的距离。 分析:

qingmarch 556

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

求二叉树中节点的最大距离,编程之美3.8

// 求二叉树中节点的最大距离,编程之美3.8 #inlcude using namespace std; struct Node { Node *lchild; Node *rchild; //data }; //因为最大距离,一定是已树中某点为根 的左右子树高度之和 int get_max_distance(tree* root,int& maxlen) { if(root==null) return 0;//空结点返回0

1110

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

[编程之美] PSet3.8 求二叉树中节点的最大距离

问题描述:        如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点之间的距离。

飞扬的青春的专栏 962

编程之美3.8: 求二叉树中节点的最大距离

问题描述:如果把二叉树看成一个图,父子节点之间的连线看成双向的,定义“距离”为两个节点之间边的个数。求二叉树中相距最远的两个节点的距离。思路:相距最远的两个节点一定是叶子节点,且这两个叶子节点的路径有三种情况: 最大距离的两个节点都在左子树中(右图) 都在右子树中 最大路径经过根节点root(此时是左子树高度 与 右子树高度 之和 + 2)(左边的图) 图中红色连接线表示最长路径。package s

Alex-zhai专栏 804

编程之美笔记 3.8 求二叉树中节点的最大距离

以下代码已经调试通过,其中涉及到一些细节的注释,是自己在写程序曾经出现错误的地方,引以为戒!看下注释能了解到自己曾经在哪里出过错。 尤其是getMaximunDistance()方法中做的注释对自己还是很有利的,即使用递归方法时,做退出的情况,我一开始分成了多种情况,root.

ning 1312

[编程之美:3.8]求二叉树中节点的最大距离

<br />如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点之间的距离。<br />//============================================================================ // Name : maxLenInBtree.cpp // Author : qibaoyuan // Version : // C

宝宝 959
上一篇: 求最长等差数列长度
下一篇: 3.10 分层遍历二叉树
_IanXiao
博客等级 码龄12年 84粉丝 241原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值