【剑指offer37】二叉树的序列化】的更多相关文章

/************************************************************************* > File Name: 37_TreeDepth.cpp > Author: Juntaran > Mail: JuntaranMail@gmail.com > Created Time: 2016年09月03日 星期六 09时49分38秒 **********************************************…
题目: 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. 分析: 递归求解左右子树的最大值即可,每遍历到一个结点,深度加1,最后返回左右子树中的最大值便是树的深度了. 程序: C++ class Solution { public: int TreeDepth(TreeNode* pRoot) { if(pRoot == nullptr) ; return helper(pRoot); } int helper(TreeNo…
剑指Offer--二叉树 前言 数据结构通常是编程面试中考察的重点.在参加面试之前,应聘者需要熟练掌握链表.树.栈.队列和哈希表等数据结构,以及它们的操作.本片博文主要讲解二叉树操作的相关知识,主要包括二叉树的建立.遍历方法的循环和递归写法. 二叉树是树形结构的一个重要类型.许多实际问题抽象出来的数据结构往往是二叉树的形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要. 二叉树的java实现 首先创建一棵二叉树如下图,然后对这颗二叉树进行遍…
❗❗ 必看经验 在博主刷题期间,基本上是碰到一道二叉树就不会碰到一道就不会,有时候一个下午都在搞一道题,看别人解题思路就算能看懂,自己写就呵呵了.一气之下不刷了,改而先去把二叉树的基础算法给搞搞懂,然后又去把剑指offer里所有关于二叉树的题目挑了出来做,越不会就越把自己往奔溃的边缘虐.还别说,这一搞,神清气爽.也怪之前什么基础准备都没有就直接去题库里挑战题目了. 在这里想说的是,在刷题之前一定得先有自己的知识储备,比如说最起初的数据结构总得会吧,或者说基础的数据结构里都有些啥啥时重点之类的.别…
剑指offer 牛客网 二叉树中和为某一个值的路径 # -*- coding: utf-8 -*- """ Created on Tue Apr 9 15:53:58 2019 @author: Administrator 题目: 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径. 路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径. (注意: 在返回值的list中,数组长度大的数组靠前) 思路: 采用递归的思路 "&q…
剑指offer 牛客网 二叉树的层序遍历 # -*- coding: utf-8 -*- """ Created on Tue Apr 9 09:33:16 2019 @author: Administrator 层序遍历:从上往下打印出二叉树的每个节点,同层节点从左至右打印. 1 / \ 2 3 / \ / \ 4 5 6 7 返回列表:[1,2,3,4,5,6,7] """ # -*- coding:utf-8 -*- class TreeN…
从上往下打印二叉树这个是不分行的,用一个队列就可以实现 class Solution { public: vector<int> PrintFromTopToBottom(TreeNode* root) { vector<int> result; queue<TreeNode* > container; if(root == NULL) return result; container.push(root); ){ TreeNode* rot = container.f…
剑指offer第8题,本来想找leetcode上对应的题,后来没找到,直接去牛客网上刷了. 题目描述: 给定一个二叉树和其中的一个结点(pNode),请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 分析 我看到这道题的第一个想法,就是不用管左子树.因为中序遍历,左子树是之前访问过了,所以下一个节点只有两种可能. 一.在右子树 二.在父亲节点的部分 分情况讨论: 一.在右子树 如果右子树只有一个节点那还好说,那么下一个节点就是右子节点.但是如…
序列化过程很简单,如果是采用先序序列,那么对先序遍历做出改变即可: 层序遍历建立二叉树,如: 1 2        3 4   #     5   6 输入第一行:将要输入的节点的个数N,如上面的为7: 第二行:输入N个节点, #include <iostream> #include <string> #include <vector> #include <queue> using namespace std; struct treeNode{ int va…
题目:请实现两个函数,分别来序列化和反序列化二叉树. 方案分析:我们知道通过二叉树的中序和任何一个前或者后续遍历都可以反序列化一棵二叉树,但是这样做有一个缺点就是,序列化的数据不能有重复的数据,否则会出错.另外,在反序列化时,需要知道中序和另外的任意一种序列才行,如果两课二叉树在字符流里读出,且二叉树的数据比较多,则会相当的耗时.所以,这里我们采取前序遍历来完成序列化和反序列化,因为我们都知道用前序遍历创建过二叉树.只不过这里如果一旦遇到NULL结点,我们需要用其他的字符来代替它.这样在反序列化…