数据结构
vds
coder鹏鹏
这个作者很懒,什么都没留下…
展开
-
堆的创建、排序C++
思路:大堆1、堆都是完全二叉树。2、将节点V和他的左右孩子比较(如果有的话),加入孩子中存在权值比V大的节点,就将其中最大的与V对换,交换完毕后继续让V与其孩子节点进行比较,直到几点V的孩子的权值都比V小或者V不存在孩子节点。3、完全二叉树的叶子节点个数为int(n/2),因此在数组下标[1,n/2]范围内的节点都是非叶子节点。于是从n/2号位开始倒着枚举节点。4、删除堆顶元素,只需要将最后一个元素覆盖对顶元素。5、插入节点,可以把想要插入的节点放在二叉树的最后,然后向上调整,把与调整节点与其父节原创 2020-06-27 22:45:47 · 159 阅读 · 0 评论 -
二叉树已知中序、后序求层次遍历
后序:8 9 4 10 5 2 6 7 3 1中序:8 4 9 2 10 5 1 6 3 7思路1、i节点的左孩子可以表示为:2i+1,右孩子可以表示为:2i;2、后序的最后一个节点为根节点,在中序中找到根节点所在的位置index,这样index左面全部为左子树,右面全部为右子树,再用同样的方法递归,3、第一次递归的结果为所有的左孩子节点的值放入map中,第二次遍历为所有的右孩子,放入...原创 2020-04-22 21:41:29 · 1126 阅读 · 1 评论 -
二叉树根据两种顺序求另外一种顺序
参考文章链接#include <iostream>#include <vector>#include <string>using namespace std;vector <char > post;string pre, mid;string ans;//知先序中序求后序void solve(int l1, int r1, in...原创 2020-04-22 16:14:02 · 177 阅读 · 0 评论 -
平衡二叉树(C++实现)
参考连接:https://blog.csdn.net/isunbin/article/details/81707606#include<stdio.h>#include<stdlib.h> typedef struct Node{ int key; struct Node *left; struct Node *right; int...原创 2020-04-19 21:58:21 · 209 阅读 · 0 评论 -
二叉排序树
参考连接:https://blog.csdn.net/Sungree/article/details/101167476#include <stdio.h>#include <stdlib.h>typedef struct BST{ int key; struct BST *lchild; struct BST *rchild;}BST;...原创 2020-04-18 22:35:18 · 152 阅读 · 0 评论 -
二叉树的创建与遍历(C语言)
#include<stdio.h>#include<stdlib.h>typedef struct BiTNode{ char data; struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;void PreOrderTraverse(BiTree T)//二叉树的先序遍历{ if(T==NUL...原创 2020-04-18 09:49:37 · 508 阅读 · 0 评论 -
二叉树的创建和三种遍历方法(Java)
package tree;import java.util.ArrayList;import java.util.List;public class VisitTree { public static void main(String[] args) { TreeNode[] nodes = new TreeNode[10]; //创建二叉树 for(in...原创 2020-04-17 10:44:14 · 205 阅读 · 0 评论