数据结构
ychl87
这个作者很懒,什么都没留下…
展开
-
二叉树重构
二叉树可以根据 先序和中序 或者 中序和后序进行重构。但是不能够根据先序和后序结果进行重构。如先序为123,后序为321,这颗二叉树是不唯一的。已知先序和中序对二叉树进行重构node* rebuildFromPreAndInOrder(char* preOrder,char *inOrder,int size){ if (size<=0) return NULL; node* r原创 2012-10-06 04:08:00 · 519 阅读 · 0 评论 -
完全二叉树的判断
利用队栈,判断是否为完全二叉树bool isFullBiTree(node* tree){ deque q; if (!tree) return true; node* t=tree; q.push_back(t); while (!q.empty()) { t=q.front(); q.pop_front(); if (t) { q.push_bac原创 2012-10-06 20:36:23 · 477 阅读 · 0 评论 -
二叉树的基本操作
本文就二叉树的基本操作进行总结包括二叉树的建立、递归遍历、非递归遍历、层序遍历等二叉树的结构体如下typedef struct _node{ char data; struct _node* lchild; struct _node* rchild;}node;1.二叉树的建立void create(node*& tree){ char data;原创 2012-10-06 02:00:58 · 482 阅读 · 0 评论 -
二叉树深度、平衡二叉树的判断
递归求取二叉树深度int depthBiTree(node* tree){ if (!tree) return 0; int ldepth=depthBiTree(tree->lchild); int rdepth=depthBiTree(tree->rchild); return ldepth>rdepth?ldepth+1:rdepth+1;}平衡二叉树的判断和求二叉原创 2012-10-06 20:50:53 · 594 阅读 · 0 评论 -
二叉查找树
二叉查找树是中已经排好序的二叉树,也称二插排序树二叉查找树的插入void insertTree(node*& tree,char elem) //递归插入{ if (!tree) { tree=(node*)malloc(sizeof(node)); tree->data=elem; tree->lchild=NULL; tree->rchild=NULL;原创 2012-10-07 18:29:51 · 410 阅读 · 0 评论 -
二叉树最近公共父节点
在二叉树中,查找两个子节点的最近公共父节点。实现方法:首先找到每个子节点的路径,然后再比较两个路径最后一个相同节点,既最近公共父节点。二叉树的数据结构如下typedef struct _node{ char data; struct _node* lchild; struct _node* rchild;}node;查找子节点的路径,利用链表list来实现bo原创 2012-10-06 02:09:46 · 619 阅读 · 0 评论