C++编程《第20课 综合训练2》教学课件.pptxVIP

  • 1
  • 0
  • 约5.35千字
  • 约 34页
  • 2026-03-13 发布于广西
  • 举报

C++编程《第20课 综合训练2》教学课件.pptx

第20课;学习目标;课堂练习;(一)对称二叉树(NOIP2018普及组);现在给出一棵二叉树,希望你找出它的一棵子树,该子树为对称二叉树,且节点数最多。请输出这棵子树的节点数。

注意:只有树根的树也是对称二叉树。本题中约定,以节点T为子树根的一棵“子树”指的是:节点T和它的全部后代节点构成的二叉树。;【样例输入1】

2

13

2-1

-1-1

【样例输出1】

1

;【数据规模与范围】

共25个测试点。

vi≤1000。

测试点1~3,n≤10,保证根结点的左子树的所有节点都没有右孩子,根结点的右子树的所有节点都没有左孩子。

测试点4~8,n≤10。

测试点9~12,n≤105,保证输入是一棵“满二叉树”。

测试点13~16,n≤105,保证输入是一棵“完全二叉树”。

测试点17~20,n≤105,保证输入的树的点权均为1。

测试点21~25,n≤106。

【分析】

(1)按照题目的描述,对称二叉树的左右子树对换后,树不变。这意味着这棵树左子树=右子树,那么如果中序遍历这棵树,递归访问左-中-右和递归访问右-中-左是一样的。所以我们比较两种中序遍历的权值序列,是判断对称的必要条件。;【分析】

(2)仔细观察题目的测试点。其中一部分测试点的权值全部是1.这就意味着无论如何遍历,权值都是1,那么前序、中序、后序,无论如何遍历,只要结点总数不变,那么权值的序列全部

文档评论(0)

1亿VIP精品文档

相关文档