
二叉树
Giotto_Ven
交大控制科学与工程研究生
展开
-
Python3-[44]面试题55-I.二叉树的深度(层次遍历/DFS)
面试题55-I.二叉树的深度题目解题思路层次遍历DFS(先序遍历)题目给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。解题思路层次遍历扫描完一层的节点,将该层的深度加1,直到队列中没有节点剩余。# Definition for a bina原创 2020-08-28 17:17:40 · 205 阅读 · 0 评论 -
Python3-[37]面试题36.二叉搜索树与双向链表(中序遍历/双向循环链表)A
面试题36.二叉搜索树与双向链表题目解题思路代码题目输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。特别地,我们希望可以就地完成转换操作。当转化完成以后,树中节点的左指针需要指向前驱,树中节点的右指针需要指向后继。还需要返回链表中的第一个节点的指针。P.S.原创 2020-08-27 20:07:46 · 215 阅读 · 0 评论 -
Python3-[34]面试题37.序列化/反序列化二叉树(层次遍历/先序遍历)A
面试题37.序列化/反序列化二叉树题目解题思路1.层次遍历1.1序列化1.2反序列化code:level traversal2.先序遍历2.1序列化2.2反序列化code:preOrder题目序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并原创 2020-08-26 20:15:02 · 453 阅读 · 0 评论 -
Python3-[26]面试题26.树的子结构(先序遍历)
面试题26.树的子结构题目解题思路1.特判;2.先序遍历3.辅助函数Judge(nodeA,B)code:preorder等价的代码:题目输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。解题思路1.特判;A,B树有一个树为空,则返回False。空树不是任意一个树的子结构。if not (A and B):return False2.先序遍历判断A中子树是否包含树B。函数Judge(nodeA,B)判断原创 2020-08-25 23:56:04 · 622 阅读 · 0 评论 -
Python3-[23]面试题28.对称的二叉树(BFS)
面试题28.对称的二叉树解题思路代码###题目判断一棵二叉树是否对称解题思路简单的思路可以通过层次遍历+镜像树的思路实现。初始que中存入(root,root)每次循环中,存入每一层的(left.right, right.left)和(left.left, right.right).限制条件:left, right = que.popleft()判断无枝?->单枝?->两枝?若为无枝,则继续弹出下一组元素判断。若为单枝,则一定不对称,返回False。若为两枝,则判断值是否原创 2020-08-25 17:36:59 · 216 阅读 · 0 评论 -
Python3-[22]面试题27.二叉树的镜像(DFS/BFS)
面试题27.二叉树的镜像题目解题思路1. BFS-层次遍历code:BFS2.DFS-先序遍历code:DFS题目求二叉树的镜像,即翻转一棵二叉树。验证是否反转可参考110/111题。解题思路1. BFS-层次遍历可以使用广度优先搜素,层次遍历每个节点,交换节点的左右子节点,若左/右子节点不为None,则添加到Queue中进行下一次的搜索。code:BFS# Definition for a binary tree node.# class TreeNode:# def __ini原创 2020-08-25 16:57:25 · 401 阅读 · 0 评论