首页 > 其他分享 >对称二叉树

对称二叉树

时间:2024-03-18 22:35:16浏览次数:13  
标签:左子 遍历 树根 中序 二叉树 对称

这里考试的时候其实就是想考递归,但是我实在是不清楚为什么\(n\)能够开到\(100W\)。。。这不随便超时吗

介绍一个确定性算法的判断一个二叉树是否对称

首先一个二叉树的中序遍历有两种,一个是先遍历左子树,一个是先遍历右子树,我们用结构归纳法,可以证明以树根为中心翻转其中一种中序遍历,就会得到另一种中序遍历

由以上推论,我们先获得这个二叉树的先遍历左子树的中序遍历,如果这个中序遍历是以树根这个点为中心的回文串,那么就代表这个二叉树的两种中序遍历是相等的,我们从实际意义上理解,就是镜面对称了

当然这个算法的复杂度对一棵树来说是\(O(n)\)的(用马拉车),而这里要判断很多树,估计只能看看哈希了

标签:左子,遍历,树根,中序,二叉树,对称
From: https://www.cnblogs.com/dingxingdi/p/18081626

相关文章

  • 数据结构入门——二叉树(中)
    通过《二叉树(上)》的学习,我们已经对二叉树有了基本的了解,那我们现在继续深入了解二叉树。二叉树的存储结构顺序存储顺序结构存储就是使用数组来存储,一般使用数组只适合表示完全二叉树,因为不是完全二叉树会有空间的浪费。而现实中使用中只有堆才会使用数组来存储,关于堆我们后......
  • 二叉树|二叉树理论基础、二叉树的递归遍历
    代码随想录(programmercarl.com)树和二叉树1.树的基本概念1.1树的定义1.2树的逻辑表示方法1.3树的基本术语1.4树的性质1.5树的基本运算1.6树的存储结构2.二叉树的概念和性质2.1二叉树的定义2.2二叉树的性质2.3二叉树与树、森林之间的转换3.二叉树的存储结构3.1......
  • 洛谷题单指南-二叉树-P3884 [JLOI2009] 二叉树问题
    原题链接:https://www.luogu.com.cn/problem/P3884题意解读:要计算二叉树的深度、宽度、节点间的距离,深度、宽度的概念很好理解,节点间的距离描述是:节点u,v之间的距离表示从u到v的最短有向路径上向根节点的边数的两倍加上向叶节点的边数。说人话就是:u到v的距离=uv最近公共祖先到u......
  • 二叉树的广度优先遍历(力扣102)
    文章目录题目前知BFS是什么?队列的基本操作有什么?题解一、思路二、解题方法三、Code总结题目Problem:102.二叉树的层序遍历给你二叉树的根节点root,返回其节点值的层序遍历。(即逐层地,从左到右访问所有节点)。前知BFS是什么?树的广度优先遍历(BFS)是一种遍......
  • 树与二叉树(数据结构)
    本篇博客讲解树与二叉树,后续会继续讲解堆——————————————————————1.树概念及结构1.1树的概念 树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的......
  • Leecode 二叉树的前序遍历
    Day2刷题我的思路:用数组list存储遍历结果,利用ArrayList的方法实现嵌套!importjava.util.*;classSolution{//defininganarraylistpublicList<Integer>preorderTraversal(TreeNoderoot){List<Integer>Traversal=newArrayList<>();......
  • 【算法与数据结构】堆排序&&TOP-K问题之深入解析二叉树(三)
    文章目录......
  • 数据结构笔记(十四)二叉树的遍历(递归)
    四种访问方式:前序遍历,中序遍历,后序遍历,层序遍历这篇文章主要为前序,中序,后序遍历的递归形式,递归形式较为简单,后面更新遍历的循环形式较为复杂,建议使用递归形式#include<stdio.h>#include<stdlib.h>typedefcharE;typedefstructTreeNode*Node;structTreeNod......
  • 面试中可能问到的几种树结构(二叉树,平衡二叉树,红黑树,B树和B+树)
    二叉树的概念二叉树是一种树形结构,其特点是每个结点至多只有两棵子树(即二叉树中不存在度大于2的结点),并且二叉树的子树有左右之分,其次序不能任意颠倒。平衡二叉树概念平衡二叉树,是二叉树的一种变形,左子树的深度和右子树的深度不能超过一。红黑树概念红黑树是一种自......
  • leedcode-翻转二叉树
    自己写的:classSolution:definvertTree(self,root:Optional[TreeNode])->Optional[TreeNode]:#创建一个新的TreeNode以存储反转后的树newroot=TreeNode()#如果输入的根节点为空,则返回空ifnotroot:......