数据结构与算法学习
文章平均质量分 85
从最基本的数据结构开始,逐步加深
录事参军
认真、努力、自强不息
展开
-
二叉树(16)---- 一个二叉树是否包含另一个二叉树
2、问题描述二叉树A和B的每个节点的数据(int型数据)存储在不同文件中,存储方式为前序遍历和中序遍历,根据这两种遍历重建二叉树,并且判断二叉树A是否包含二叉树B。3、算法描述(1)首先将节点数据的前序遍历和中序遍历序列读入数组(2)分别根据各自的前序遍历和中序遍历重建二叉树A和B(3)判断B是否在A中代码:#include #include #includ原创 2014-12-30 13:34:42 · 1688 阅读 · 1 评论 -
二叉树----二叉树面试题合集
相关链接:链表总结----链表面试题合集二叉树(1)----先序遍历(前序遍历),递归和非递归方式实现二叉树(2)----中序遍历,递归和非递归实现二叉树(3)----后序遍历,递归和非递归方式二叉树(4)----求二叉树深度,递归和非递归二叉树(5)----求二叉树节点数,递归与非递归二叉树(6)----按层遍历二叉树二叉树(7)---原创 2014-12-19 18:13:36 · 3388 阅读 · 0 评论 -
二叉树(15)----由中序遍历和后序遍历重建二叉树,递归方式
1、二叉树定义typedef struct BTreeNodeElement_t_ { void *data;} BTreeNodeElement_t;typedef struct BTreeNode_t_ { BTreeNodeElement_t *m_pElemt; struct BTreeNode_t_ *m_pLeft; struc原创 2014-12-18 11:29:32 · 2042 阅读 · 0 评论 -
二叉树(14)----由前序遍历和中序遍历重建二叉树,递归方式
1、二叉树定义typedef struct BTreeNodeElement_t_ { void *data;} BTreeNodeElement_t;typedef struct BTreeNode_t_ { BTreeNodeElement_t *m_pElemt; struct BTreeNode_t_ *m_pLeft; struc原创 2014-12-18 00:44:53 · 5107 阅读 · 0 评论 -
二叉树(13)----求二叉树中任意两个节点之间的距离,递归和非递归
1、二叉树定义typedef struct BTreeNodeElement_t_ { void *data;} BTreeNodeElement_t;typedef struct BTreeNode_t_ { BTreeNodeElement_t *m_pElemt; struct BTreeNode_t_ *m_pLeft; struc原创 2014-12-17 11:42:31 · 7624 阅读 · 1 评论 -
二叉树(12)----查找两个节点最低祖先节点(或最近公共父节点等),递归和非递归
1、二叉树定义:typedef struct BTreeNodeElement_t_ { void *data;} BTreeNodeElement_t;typedef struct BTreeNode_t_ { BTreeNodeElement_t *m_pElemt; struct BTreeNode_t_ *m_pLeft; stru原创 2014-12-16 23:37:07 · 11760 阅读 · 1 评论 -
二叉树(11)----求二叉树的镜像,递归和非递归方式
1、二叉树定义:typedef struct BTreeNodeElement_t_ { void *data;} BTreeNodeElement_t;typedef struct BTreeNode_t_ { BTreeNodeElement_t *m_pElemt; struct BTreeNode_t_ *m_pLeft; stru原创 2014-12-16 13:26:45 · 4044 阅读 · 2 评论 -
二叉树(10)----比较两个二叉树是否相同(结构和数据),递归和非递归
1、二叉树定义typedef struct BTreeNodeElement_t_ { void *data;} BTreeNodeElement_t;typedef struct BTreeNode_t_ { BTreeNodeElement_t *m_pElemt; struct BTreeNode_t_ *m_pLeft; struc原创 2014-12-16 11:41:46 · 10711 阅读 · 2 评论 -
二叉树(9)----打印二叉树中第K层的第M个节点,非递归算法
1、二叉树定义:typedef struct BTreeNodeElement_t_ { void *data;} BTreeNodeElement_t;typedef struct BTreeNode_t_ { BTreeNodeElement_t *m_pElemt; struct BTreeNode_t_ *m_pLeft; struct B原创 2014-12-15 13:43:00 · 2637 阅读 · 0 评论 -
二叉树(8)----求二叉树第K层的节点数和二叉树第K层的叶子节点数,递归方式和非递归方式
1、二叉树定义typedef struct BTreeNodeElement_t_ { void *data;} BTreeNodeElement_t;typedef struct BTreeNode_t_ { BTreeNodeElement_t *m_pElemt; struct BTreeNode_t_ *m_pLeft; struct BT原创 2014-12-15 11:12:40 · 12741 阅读 · 1 评论 -
二叉树(7)----求二叉树叶子节点个数,递归和非递归
1、二叉树定义:typedef struct BTreeNodeElement_t_ { void *data;} BTreeNodeElement_t;typedef struct BTreeNode_t_ { BTreeNodeElement_t *m_pElemt; struct BTreeNode_t_ *m_pLeft; struct B原创 2014-12-15 10:31:55 · 12084 阅读 · 0 评论 -
二叉树(6)----按层遍历二叉树
1、二叉树定义typedef struct BTreeNodeElement_t_ { void *data;} BTreeNodeElement_t;typedef struct BTreeNode_t_ { BTreeNodeElement_t *m_pElemt; struct BTreeNode_t_ *m_pLeft; struct BTr原创 2014-12-15 10:10:29 · 2989 阅读 · 0 评论 -
二叉树(5)----求二叉树节点数,递归与非递归
1、二叉树定义typedef struct BTreeNodeElement_t_ { void *data;} BTreeNodeElement_t;typedef struct BTreeNode_t_ { BTreeNodeElement_t *m_pElemt; struct BTreeNode_t_ *m_pLeft; struct BTr原创 2014-12-14 22:44:37 · 4077 阅读 · 1 评论 -
二叉树(4)----求二叉树深度,递归和非递归
1、二叉树定义typedef struct BTreeNodeElement_t_ { void *data;} BTreeNodeElement_t;typedef struct BTreeNode_t_ { BTreeNodeElement_t *m_pElemt; struct BTreeNode_t_ *m_pLeft; struct BTr原创 2014-12-14 22:11:30 · 12285 阅读 · 0 评论 -
二叉树(3)----后序遍历,递归和非递归方式
1、二叉树定义typedef struct BTreeNodeElement_t_ { void *data;} BTreeNodeElement_t;typedef struct BTreeNode_t_ { BTreeNodeElement_t *m_pElemt; struct BTreeNode_t_ *m_pLeft; struct BTr原创 2014-12-14 21:58:22 · 2334 阅读 · 2 评论 -
二叉树(2)----中序遍历,递归和非递归实现
1、二叉树定义:typedef struct BTreeNodeElement_t_ { void *data;} BTreeNodeElement_t;typedef struct BTreeNode_t_ { BTreeNodeElement_t *m_pElemt; struct BTreeNode_t_ *m_pLeft; struct BT原创 2014-12-14 19:57:59 · 2197 阅读 · 1 评论 -
二叉树(1)----先序遍历(前序遍历),递归和非递归方式实现
1、二叉树节点定义typedef struct BTreeNodeElement_t_ { void *data;} BTreeNodeElement_t;typedef struct BTreeNode_t_ { BTreeNodeElement_t *m_pElemt; struct BTreeNode_t_ *m_pLeft; stru原创 2014-12-14 19:00:02 · 5889 阅读 · 0 评论 -
链表总结----链表面试题合集
1、单链表基本操作2、双链表基本操作3、循环单链表基本操作4、反转单链表5、查找单链表倒数第K个节点6、倒序打印链表7、查找链表中间节点8、删除链表第K个节点,平均时间复杂度为O(1)9、判断链表是否有环10、判断两个单链表是否相交11、求相交链表的第一个相交节点12、判断是否有环,并判定是6型环还是0型环13、判断链表是否有环,并求环入口节点1原创 2014-12-13 23:25:00 · 2900 阅读 · 0 评论 -
链表(16)----删除链表重复元素
算法:先将链表排序,然后遍历链表删除重复元素,时间复杂度为O(NlogN)。原创 2014-12-13 23:23:30 · 1581 阅读 · 1 评论 -
链表(15)----给定链表中间某个节点,将待插入节点插入给定节点之前
1、 链表定义typedef struct ListElement_t_ { void *data; struct ListElement_t_ *next;} ListElement_t;typedef struct List_t_{ int size; int capacity; ListElement_t *head; List原创 2014-12-13 22:50:36 · 1988 阅读 · 0 评论 -
链表(14)----合并两个有序链表
1、链表定义typedef struct ListElement_t_ { void *data; struct ListElement_t_ *next;} ListElement_t;typedef struct List_t_{ int size; int capacity; ListElement_t *head; ListE原创 2014-12-13 22:31:21 · 1456 阅读 · 0 评论 -
链表(13)----判断链表是否有环,并返回环入口节点
1、链表定义typedef struct ListElement_t_ { void *data; struct ListElement_t_ *next;} ListElement_t;typedef struct List_t_{ int size; int capacity; ListElement_t *head; ListE原创 2014-12-13 21:52:04 · 2134 阅读 · 0 评论 -
链表(12)----判断是否有环,如果有环,判断是6型环,还是0型环
1、链表定义typedef struct ListElement_t_ { void *data; struct ListElement_t_ *next;} ListElement_t;typedef struct List_t_{ int size; int capacity; ListElement_t *head; ListE原创 2014-12-12 17:23:52 · 1573 阅读 · 0 评论 -
链表(11)----求相交链表的第一个交点
1、链表定义typedef struct ListElement_t_ { void *data; struct ListElement_t_ *next;} ListElement_t;typedef struct List_t_{ int size; int capacity; ListElement_t *he原创 2014-12-12 16:27:49 · 1275 阅读 · 0 评论 -
链表(10)----判断两个单链表是否相交
1、链表定义typedef struct ListElement_t_ { void *data; struct ListElement_t_ *next;} ListElement_t;typedef struct List_t_{ int size; int capacity; ListElement_t *head; ListEleme原创 2014-12-12 15:18:23 · 1219 阅读 · 0 评论 -
链表(9)----判断链表是否有环
1、链表定义typedef struct ListElement_t_ { void *data; struct ListElement_t_ *next;} ListElement_t;typedef struct List_t_{ int size; int capacity; ListElement_t *head; ListEle原创 2014-12-12 15:05:29 · 1092 阅读 · 0 评论 -
链表(8)----删除链表的第K个节点,时间复杂度为O(1)
1、链表定义typedef struct ListElement_t_ { void *data; struct ListElement_t_ *next;} ListElement_t;typedef struct List_t_{ int size; int capacity; ListElement_t *head; ListEle原创 2014-12-12 14:44:51 · 2755 阅读 · 0 评论 -
链表(7)----倒序打印链表
1、链表定义typedef struct ListElement_t_ { void *data; struct ListElement_t_ *next;} ListElement_t;typedef struct List_t_{ int size; int capacity; ListElement_t *head; ListElem原创 2014-12-12 11:06:26 · 1830 阅读 · 0 评论 -
链表(6)----查找链表中间节点
1、链表定义typedef struct ListElement_t_ { void *data; struct ListElement_t_ *next;} ListElement_t;typedef struct List_t_{ int size; int capacity; ListElement_t *head; ListElem原创 2014-12-12 10:43:38 · 2050 阅读 · 0 评论 -
链表(5)----查找链表倒数第K个节点
1、链表定义typedef struct ListElement_t_ { void *data; struct ListElement_t_ *next;} ListElement_t;typedef struct List_t_{ int size; int capacity; ListElement_t *head; List原创 2014-12-12 10:36:02 · 3306 阅读 · 0 评论 -
链表(4)----反转链表
1、链表结构定义typedef struct ListElement_t_ { void *data; struct ListElement_t_ *next;} ListElement_t;typedef struct List_t_{ int size; int capacity; ListEleme原创 2014-12-11 17:21:37 · 1587 阅读 · 0 评论 -
队列(2)----用数组实现队列
1、定义typedef struct QueElement_t_ { void *data;} QueElement_t;typedef struct Que_t_{ int size; int capacity; int head; int tail; int (*destroy)(void *data ); QueElement原创 2014-12-11 12:54:57 · 826 阅读 · 1 评论 -
队列(1)----用链表实现队列
1、定义typedef struct QueElement_t_ { void *data; struct QueElement_t_ *next;} QueElement_t;typedef struct Que_t_ { int size; int capacity; int (*destroy)( void *data ); QueE原创 2014-12-11 11:57:04 · 858 阅读 · 0 评论 -
栈(2)----用数组实现栈
1、基本定义typedef struct StackElement_t_ { void *data;} StackElement_t;typedef struct Stack_t_ { int size; int capacity; int (*destroy)(void *data); int top_index; StackElemen原创 2014-12-11 09:51:49 · 592 阅读 · 0 评论 -
栈(1)----用链表实现栈
一、定义typedef struct StackElement_t_{ void *data; struct StackElement_t *next;} StackElement_t;typedef struct Stack_t_ { int size; int capacity; int (*destory)(void *data);原创 2014-12-10 16:36:09 · 779 阅读 · 0 评论 -
链表(3)----循环单链表基本操作
1、循环链表基本定义typedef struct CListElement_t_{ void *data; struct CListElement_t *next;} CListElement_ttypedef struct CList_t_ { int size; int (*match)(const void *key1,原创 2014-12-09 19:35:51 · 1450 阅读 · 0 评论 -
链表(2)----双链表基本操作
双链表的基本操作原创 2014-12-09 17:45:10 · 1684 阅读 · 0 评论 -
链表(1)----单链表基本操作
1、单链表定义单链表元素定义:typedef struct ListElement_t_{ void *data; struct ListElement_t_ *next;} ListElement_t;单链表定义:typedef struct List_t_{ int size; int (*match)(const void原创 2014-12-09 11:19:38 · 2207 阅读 · 3 评论