- 105. 从前序与中序遍历序列构造二叉树
题目链接解题思路:首先我们得知道人工怎么建这棵树。先序遍历[0,R1]第一个节点,就是根。然后我们在中序遍历[0,R2]找到根的位置,假如是x,那么,中序遍历中[0,x-1]就是左子树,中序遍历中[x+1,R2]就是右子树。那么先序遍历呢?左子树节点个数是x个,先序遍历是要先遍历完左子树,才能到......
- 「数据结构课程设计」二叉排序树与文件操作
功能要求:(1)从键盘输入一组学生记录建立二叉排序树;(2)中序遍历二叉排序树;(3)求二叉排序树深度;(4)求二叉排序树的所有节点数和叶子节点数;(5)向二叉排序树插入一条学生记录;(6)从二叉排序树中删除一条学生记录;(7)从二叉排序树中查询一条学生记录;(8)以广义表的形式输出二叉排序树该文件也......
- 103. 二叉树的锯齿形层序遍历
题目链接解题思路:和层序遍历有明显的不同。通过观察,可以得到,当前层,和下一层的顺序是「相反」的,遇到这种相反的问题,考虑用栈。本题就是用两个栈,一个栈在放入时,先放左儿子,再放右儿子,另一个栈在放入时,先放右儿子,再放左儿子。然后两个栈交替使用即可。为什么能得到这个思路?观察......
- 102. 二叉树的层序遍历
题目链接解题思路:层序遍历就用队列,唯一需要注意的就是,要每一层单独收集,所以要用一个变量,记录每一层需要收集的数目,同时还要记录下一层需要收集的数目代码classSolution:deflevelOrder(self,root:Optional[TreeNode])->List[List[int]]:ifroot==No......
- 二叉树的最近公共祖先(递归)
给定一个二叉树,找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树T的两个节点p、q,最近公共祖先表示为一个节点x,满足x是p、q的祖先且x的深度尽可能大(一个节点也可以是它自己的祖先)。” 示例1:输入:root=[3,5,1,6,2,0,8,null,n......
- 101. 对称二叉树
题目链接解题思路:递归的思路,就是左子树和右子树的值相等,同时,左子树的左子树与右子树的右子树要相似,左子树的右子树与右子树的左子树要相似。看代码很清晰代码classSolution:defprocess(self,node1,node2)->bool:ifnode1==Noneandnode2==None......
- 94. 二叉树的中序遍历
题目链接解题思路:中序遍历:左中右,用一个栈,同时用空来标识「中」,所以入栈顺序就是右->中->None->左代码classSolution:definorderTraversal(self,root:Optional[TreeNode])->List[int]:#使用栈#中序的顺序,左中右压栈就是右中左为了标......
- 详细介绍 JavaScript 数组的常用方法
1.数组元素访问和修改方法constarr=['a','b','c'];//添加/删除元素arr.push('d');//末尾添加元素,返回新长度arr.pop();//删除最后一个元素,返回被删除的元素arr.unshift('x');//开头添加元素,返回新长度arr.shift();......
- 从前序与中序遍历序列构造二叉树(递归)
给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示例1:输入:preorder=[3,9,20,15,7],inorder=[9,3,15,20,7]输出:[3,9,20,null,null,15,7]示例2:输入:preorder=......
- 二叉树展开为链表(先序遍历)
给你二叉树的根结点 root ,请你将它展开为一个单链表:展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。 示例1:输入:root=[1,2,5,3,4,null,6]输出:[1,null,......