在这之前,我们先了解一下二叉树/前序/中序/后序。
二叉树:二叉树是一种树形数据结构,其中每个节点最多有两个子节点,通常称为左子节点和右子节点。每个节点可以包含数据(或称为值),以及指向其左子节点和右子节点的指针(或引用)。
遍历:
- 前序遍历(Preorder Traversal):根节点 -> 左子树 -> 右子树。
- 中序遍历(Inorder Traversal):左子树 -> 根节点 -> 右子树。
- 后序遍历(Postorder Traversal):左子树 -> 右子树 -> 根节点。
- 层次遍历(Level Order Traversal):按层次从上到下、从左到右遍历。
而知道前序和中序,比如:
前序遍历为:A, B, D, E, C
中序遍历为:D, B, E, A, C
首先找到根节点,A,那么在再看中序,在A左边的都是左节点,在右边的都是右节点。
以此类推,在子序列中同样按照这个方法进行查找,分类。
比如:
已知一棵二叉树的前序遍历为CABEFDHG,中序遍历为BAFECHDG,那么它的后续遍历是。
即前序遍历:CABEFDHG
中序遍历:BAFECHDG
C是根节点,则BAFECHDG,BAFE为左节点。
不知道结构的话再看,子序列前序:ABEF,中序BAFE。
A为根节点。
至于C的右节点,则同理。
最终可得出:后序遍历为:BFEAHGDC
当然,如果仅通过前序遍历和后序遍历,是无法唯一确定一棵二叉树的中序遍历的。这是因为前序遍历和后序遍历都只提供了关于根节点与其子节点相对位置的部分信息,但不足以完全确定树的结构。
如果是通过中序和后序则可以确定一棵二叉树。
比如:
中序:DBEAFC
后序:DEBFCA
给定中序遍历和后序遍历的序列,可以通过以下步骤来确定前序遍历:
- 在后序遍历中找到最后一个元素,这个元素是二叉树的根节点。
- 在中序遍历中找到根节点,这会将中序遍历分为左右两个子树。
- 根据根节点将后序遍历也分为左右两个子树。
- 递归地对左右子树应用相同的步骤。
所以,前序遍历是:ABDECF。
近日总结:
昨天来到了学校,主要是在收拾东西,处理学习工位问题,晚上的时候学了一会儿,但缺少纸笔......好在,今天拿来了,起得也很早,至少是这几个月里为数不多的早起了。
不过也得出结论,晚上还是晚会儿回宿舍好一些,学又学不了,舍友还一直吵吵闹闹。
预计2024年在校3个月,秋招寡淡如水,难搞,还是得提升自己,然后2024年12月底开启春招,只能说,菜,就多练。
昨天抽了一张卡:在不完美中寻找美好。如果事与愿违,请相信一定另有安排。
秋招确实比之前找实习难很多,但是也应该依旧保持乐观心态,要相信好的总在后面,不过也有前提,要做好充足的准备,把握机会。