牛客网剑指offer题解笔记

牛客网剑指offer题解笔记

先序遍历和中序遍历确定一颗二叉树
题目描述:
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
解题思路:
先序遍历中的第一个节点必定是当前要构建的节点,即确定了根节点。根据该节点在后续遍历序列中确定左右子树包含的节点。得到先序遍历数组【2,4,7】【3,5,6,8】和后续遍历数组【4,7,2,】【5,3,8,6】即通过递归的形式再确定子树的左右子树。

两个栈实现队列
题目描述:
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
解题思路:
首先定义两个栈,取数据时从栈2取,存数据从栈1存,如果栈2为空,将栈1的数据全部迁移到栈2,再从栈2取数据.

判断树的子结构
题目描述:
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
解题思路:
A树>B树。依题意只要有一颗树为null返回false,首先要在A树中找到一个节点等于B的根节点,找到之后,两个数同时往下遍历比较,知道B数遍历完。比较的过程中存在差异的话,A数的遍历回到与B的根节点相同的那个节点,往下寻找下一个与B根节点相同的节点

猜你喜欢

转载自www.cnblogs.com/TTL-176441/p/12378333.html