NO_4在二元树中找出和为某一值的所有路径
来源:互联网 发布:麦当劳改名金拱门知乎 编辑:程序博客网 时间:2024/06/06 04:37
题目博客:
http://blog.csdn.net/v_JULY_v/article/details/6057286
题目:
输入一个整数和一棵二元树。
从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。
打印出和与输入整数相等的所有路径。
例如 输入整数22和如下二元树
10
/ /
5 12
/ \
4 7
则打印出两条路径:10, 12和10, 5, 7。
二元树节点的数据结构定义为:
struct BinaryTreeNode // a node in the binary tree
{
int m_nValue; // value of node
BinaryTreeNode *m_pLeft; // left child of node
BinaryTreeNode *m_pRight; // right child of node
};
__author__ = 'Administrator'import copyclass TreeNode: def __init__(self,value,leftChild=None,rightChild=None): self.value=value self.leftChild,self.rightChild=leftChild,rightChilddef print_load(root,value=22): ps=print_loadwithold([[]],root,22) for innerpath in ps: for inner_obj in innerpath: print inner_obj.value, printdef print_loadwithold(oldpath,curnode,leftvalue): if leftvalue<0: return None else: if not curnode: return None for innerpath in oldpath: innerpath.append(curnode) if curnode.value==leftvalue: return oldpath leftpath=print_loadwithold(copy.deepcopy(oldpath),curnode.leftChild,leftvalue-curnode.value) rightpath=print_loadwithold(copy.deepcopy(oldpath),curnode.rightChild,leftvalue-curnode.value) finalpath=[] for path in (leftpath,rightpath): if path: finalpath.extend(path) return finalpathnode4=TreeNode(4)node7=TreeNode(7)node5=TreeNode(5,node4,node7)node12=TreeNode(12)node10=TreeNode(10,leftChild=node5,rightChild=node12)print_load(node10)import copyclass TreeNode: def __init__(self,value,leftChild=None,rightChild=None): self.value=value self.leftChild,self.rightChild=leftChild,rightChilddef print_load(root,value=22): ps=print_loadwithold([[]],root,22) for innerpath in ps: for inner_obj in innerpath: print inner_obj.value, printdef print_loadwithold(oldpath,curnode,leftvalue): if leftvalue<0: return None else: if not curnode: return None for innerpath in oldpath: innerpath.append(curnode) if curnode.value==leftvalue: return oldpath leftpath=print_loadwithold(copy.deepcopy(oldpath),curnode.leftChild,leftvalue-curnode.value) rightpath=print_loadwithold(copy.deepcopy(oldpath),curnode.rightChild,leftvalue-curnode.value) finalpath=[] for path in (leftpath,rightpath): if path: finalpath.extend(path) return finalpathnode4=TreeNode(4)node7=TreeNode(7)node5=TreeNode(5,node4,node7)node12=TreeNode(12)node10=TreeNode(10,leftChild=node5,rightChild=node12)print_load(node10)使用字典存路径:
def GetLoad(curnode,pre_dic,value=22,prenode=None): if not curnode: return None else: if prenode: pre_dic[curnode.value]=prenode.value else: pre_dict[curnode.value]=-1 if curnode.value==value: return [curnode.value] elif curnode.value>value: return None else: finallist=[] for nodelist in (GetLoad(curnode.leftChild,pre_dic,value-curnode.value,curnode), GetLoad(curnode.rightChild,pre_dic,value-curnode.value,curnode)): if nodelist: finallist.extend(nodelist) return finallist return None
0 0
- NO_4在二元树中找出和为某一值的所有路径
- 在二元树中找出和为某一值的所有路径的个人代码
- 在二元树中找出和为某一值的所有路径(树)
- 在二元树中找出和为某一值的所有路径(树)
- 4.在二元树中找出和为某一值的所有路径(树)
- No4、在二元树中找出和为某一值的所有路径(树)
- 在二元树中找出和为某一值的所有路径(树)
- 在二元树中找出和为某一值的所有路径(树)
- 4.在二元树中找出和为某一值的所有路径(树)
- 4.在二元树中找出和为某一值的所有路径(树)
- 4.在二元树中找出和为某一值的所有路径(树)
- 在二元树中找出和为某一值的所有路径-递归算法
- 在二元树中找出和为某一值的所有路径
- 在二元树中找出和为某一值的所有路径
- 在二元树中找出和为某一值的所有路径
- 算法讨论(三)---在二元树中找出和为某一值的所有路径
- 在二元树中找出和为某一值的所有路径
- 算法题23 在二元树中找出和为某一值的所有路径
- mysql中“Table ‘’ is read only”的解决办法
- 织梦如何调用文件保存目录名
- 2014年在美国上市的中国企业名单(截止2014年10月17日)
- Android学习日志04__参考资源
- myeclipse集成weblogic服务器
- NO_4在二元树中找出和为某一值的所有路径
- lua 之 label
- android弹出时间选择框
- 【原理思路】斐波那契堆各操作编程思路
- 【Python】工厂函数
- Java中标签的使用
- android 短信分享
- 练习6.23
- Matlab中的结构(struct)数组