递归实现树的遍历,深度未知,广度未知
来源:互联网 发布:c语言dijkstra算法 编辑:程序博客网 时间:2024/04/28 15:47
大学的时候虽然数据结构考试成绩不错,但是却没有认真编码。现在工作,在做一个公式处理模块,要求能够公式套公式,而且公式还挺复杂。
这个问题纠结了我2个月了,一直就放到心头干别的模块,今天实在不行,赶紧请教csdn的大牛帮助解决。学习不少知识,关于递归
是这么一个逻辑,知道一个公式,然后要求利用已知的这个公式,查找下面的公式,一直到能够处理,然后再反向向上填充原来的公式,最终算出值。
最顶层 顶级公式
/ | \
下一层 公式 公式 公式
/ | | |
下一层 变量 公式 公式 公式
/ \ | |
等等层 。。。。。。。。。。。。。。。。
最底层 变量 变量 变量
我把这个问题抽象成了一棵树,只不过树的深度,广度都未知。
下面是大牛的伪代码:
public void 深度优先遍历函数 (Node node, CallBack fun) {
Nodes ns = node.所有子节点;
for (Node n : ns) {
深度优先遍历函数(n, fun);
}
fun(node);
}
注:CallBack 是遍历时需要对每个节点进行什么特殊计算或处理的回调接口函数。
这个要比具体程序好多了
我的公式处理伪代码
formulaOperation(id,arry)
idList是数据查询的所有下一层公式id
for(id in idlist){
formulaOperation(id,arry)
}
formulaOperation(id,arry)
这里的arry是一个数组。里面放着下级公式最终值和id,通过这样传递,这个arry是一个不断改变的能够实现公式的运算
- 递归实现树的遍历,深度未知,广度未知
- 二叉树的深度与广度遍历及前序遍历递归非递归实现
- c++实现二叉树的广度·深度遍历(递归~非递归)
- 树的深度优先遍历和广度优先遍历非递归实现.
- 递归实现图的深度和广度遍历
- 简要说明树的深度优先、广度优先遍历算法,及非递归实现的特点
- 简要说明树的深度优先、广度优先遍历算法,及非递归实现的特点
- 二叉树的深度优先遍历(递归、非递归),广度优先遍历(递归)
- 遍历一个未知的json
- 图的遍历(深度递归遍历,深度非递归遍历,广度递归遍历)
- 通过递归实现嵌套未知次数的循环
- 二叉树的操作 深度广度遍历,二叉树递归和非递归遍历
- 二叉树的操作 深度广度遍历,二叉树递归和非递归遍历
- 二叉树的深度优先遍历、广度优先遍历和非递归遍历
- 二叉树的深度优先遍历、广度优先遍历和非递归遍历
- 二叉树的深度优先遍历、广度优先遍历和非递归遍历
- 二叉树的深度优先遍历、广度优先遍历和非递归遍历
- 二叉树的深度优先遍历、广度优先遍历和非递归遍历
- Hadoop
- SQL*Net more data to client意味着什么?
- [Sybase]TDS 5.0 Functional Specification Version 3.8
- 产品介绍
- Sql中的sum()和count()
- 递归实现树的遍历,深度未知,广度未知
- 获取日期对应的第几周
- 基于jquery的jqDnR拖拽溢出的修改
- date and time information matlab
- 常用社交网络(SNS、人人网、新浪微博)动态新闻(feed、新鲜事、好友动态)系统浅析
- android控件之ListView(三)
- 岳阳楼记 范仲淹原文及译文
- eclipse中svn连不上部署在windows服务器上的svnserver问题解决
- C++学习之new 与 delete表达式