树(图)的建立、初始化和遍历
来源:互联网 发布:大连pm2.5历年数据 编辑:程序博客网 时间:2024/06/06 09:42
目前我理解的是有两种方法
自定义数据结构——节点,结构中包含下一个节点的指针,将节点与节点间串联起来。
如果不需要记录边的权值,则可用vector<int> edges[101];表示,(sicily 1034)
自定义数据结构——节点,结构中包含下一个节点的指针,将节点与节点间串联起来。
以下是二叉查找树的建立和初始化方法
/**定义树形结构*/typedef struct Tree{ TREE_TYPE value; struct Tree *left; struct Tree *right;}Tree_node;/**根节点作为全局静态变量*/static Tree_node *root;/**初始化树*/void create_tree(){ root = NULL;}/**向树种插入数据*/Tree_node* insert(Tree_node *node,TREE_TYPE value){ if(node == NULL) { node = (Tree_node*)malloc(sizeof(Tree_node) * 1); node-> value = value; node -> left = NULL; node -> right = NULL; if(root == NULL) //如果为根节点 root = node; } else { if(value < node->value) //比该节点值小,写向左子树 node->left = insert(node->left,value); else //比该节点值大,写向右子树 node->right = insert(node->right,value); } return node;}
则自定义数据结构可以为:边(Edge),如果需要记录边的权值,则需要建立这样的一个struct (sicily 1024)
struct Edge{int to; int length;Edge(int t, int l){to=t; length=l;}};
如果不需要记录边的权值,则可用vector<int> edges[101];表示,(sicily 1034)
每个节点的子节点用vector存储起来,edges【i】【j】表示第i个节点的第j个子节点。
DFS
void dfs(int start, int dist){int i,next,len;visited[start] = true;if(dist > result) result = dist;for(i=0; i<path[start].size(); i++){next = path[start][i].to;len = path[start][i].length;if(!visited[path[start][i].to])dfs(next, dist+len);}}
0 0
- 树(图)的建立、初始化和遍历
- 树的建立和遍历
- 树的建立和遍历
- 二叉树的建立和遍历(递归)
- 二叉树的建立和遍历(总结)
- 二叉树的建立和遍历(递归、非递归)
- 二叉树的建立和遍历程序代码(Java,C)
- 二叉树的建立和遍历
- 二叉树 普通的 建立和遍历
- 二叉树的建立和遍历
- 二叉树的建立和遍历
- Tree 二叉树的建立 和遍历
- 二叉树的建立和遍历
- [转]二叉树的建立和遍历
- 二叉树的建立和遍历
- 二叉树的建立和遍历
- 二叉树的建立和遍历
- 二叉树的建立和遍历
- leetcode--Remove Element
- 如何对修改后的java源代码进行重新打包
- log4cplus:一个按天为单位、按不同类型归类的配置文件
- 如何修改(更换)SVN账户
- c++模板类
- 树(图)的建立、初始化和遍历
- OpenCV学习笔记(三):将图像显示在MFC控件上并做直方图均衡化处理
- 为什么0.1无法被二进制小数精确表示?
- flex渲韵效果
- Linux常用指令 2 vi编辑器的常用命令
- MFC 小知识总结一
- IOS编程教程(十三):如何往表视图(Table View)添加搜索栏(Search Bar)
- SIM Card-基础 (11.11)
- jQuery Positioning data is until the last line