数据结构
再见_旧时光
做自己喜欢的事,成功的几率会大很多,如果做自己不喜欢的事并且成功的话,这才是一件了不起的事情。
展开
-
NOWCODER【编程题】——二叉树的后序遍历序列
题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。解题思路首先我们需要知道二叉树后序遍历序列的特点:最后一个节点为根节点,去掉根节点的话,可以把s列分为两部分,左边那部分所有节点值都比根节点小,右边那部分都比根节点大。下面看怎么解决这个题:首先判断这棵树是否为空树,如果为空树的话,返回f...原创 2018-08-12 19:39:49 · 534 阅读 · 0 评论 -
NOWCODER【编程题】——二叉树的深度
题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。代码实现:二叉树节点定义:struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NU...原创 2018-08-10 21:37:54 · 1164 阅读 · 0 评论 -
NOWCODER【编程题】——把二叉树打印成多行
题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。解题思路输入提示:从已经给出的提示来看,要求返回一个vector<vector<int>>类型的数组,所以先定义一个这样的数组:vector<vector<int>>res 判断这颗二叉树是否为空树,如果是空树,直接返回res 不为空,定义一队列queue...原创 2018-08-09 20:41:11 · 193 阅读 · 0 评论 -
NOWCODER编程题——删除链表中重复的结点
题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5解题思路首先判断链表是否为空,或者是否只含有一个节点,如果是,则返回头结点; 创建一个新节点cur,使得cur->next=pHead。这个节点是为了防...原创 2018-08-05 10:31:45 · 138 阅读 · 0 评论 -
LeetCode编程题——linked-list-cycle(判断单链表是否带环)
题目描述Given a linked list, determine if it has a cycle in it.Follow up:Can you solve it without using extra space?给一个链表,判断它是否有环?不能使用额外空间。解题思路如果链表为空,返回false 定义一个快指针 fast,一个慢指针 slow 分别指向链表头结...原创 2018-08-05 08:56:21 · 219 阅读 · 0 评论 -
Huffman树与文件压缩的原理
Huffman树与文件压缩1、Huffman树的简单介绍 Huffman树,又称为最优二叉树,是加权路径长度最短的二叉树。 下面,我要用一个简单的数组构造一棵Huffman树:a[]={0,1,2,3,4,5,6,7,8,9};从图片里我们可以看到数组里面的元素都成了Huffman树的叶子节点(它总是从数组里面找到最小的两个元素开始构造,再把两个数之和放回数组,重复上述过程...原创 2018-07-13 12:31:35 · 4129 阅读 · 0 评论 -
leetcode--[编程题]same-tree
题目描述:Given two binary trees, write a function to check if they are equal or not. Two binary trees are considered equal if they are structurally identical and the nodes have the same value. ...原创 2018-06-30 21:35:55 · 271 阅读 · 0 评论 -
每日一题--空格替换
//1.题目把字符串中空格替换成 %20//分析://循环遍历字符串,统计字符串个数//根据空格个数延长字符串//遍历字符串,替换空格符void* repalceSpace(char *str ,int len){ int count = 0; char* tmp = str; while (*tmp!='\0') { if (*tmp...原创 2018-06-17 10:40:08 · 155 阅读 · 0 评论 -
单链表的基本操作(C语言实现)
首先我来介绍一下要实现的的单链表基本基本操作有哪些:创建节点,头尾的插入和删除,某个位置的插入和删除,查找某个数据是否存在于单链表中。我们将从以下四方面对上述操作进行实现。1、单链表的结构体typedef struct ListNode{ Datatype data; //数据 struct ListNode* next; //指向结构体的...原创 2018-04-21 10:36:28 · 6073 阅读 · 0 评论 -
用C++语言创建一棵二叉树及实现二叉树的各种操作
本文将为各位读者展示如何实现创建二叉树、二叉树的各种遍历(先序遍历[递归和非递归]、中序遍历、后序遍历)以及求二叉树节点个数、深度、叶子节点、第K层节点等一系列操作。以下为代码实现部分(部分解析包含在注释中),代码包含测试部分:# define _CRT_SECURE_NO_WARNINGS 1#include<iostream>using namespace std;...原创 2018-03-11 12:05:04 · 14372 阅读 · 6 评论 -
NOWCODER【编程题】——平衡二叉树
题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。解题思路首先我们应该知道,平衡二叉树就是每一个根的左右子树的高度差都不大于1,接下来看我的解体思路:实现一个求二叉树高度的函数; 利用这个函数求出这个二叉树左右子树的高度及高度差diffdepth; 判断这个高度差绝对值是否小于1; 然后递归地判断子树是否为平衡二叉树。不足之处:多次对左右字数求高度,时间复杂度可能会比较...原创 2018-08-12 20:34:37 · 324 阅读 · 0 评论