“常用公式”在线计算,“设计手册”在线查询
题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如输入整数22 和如下二元树10/ \5 12/ \4 7则打印出两条路径:10, 12 和10, 5, 7。二元树节点的数据结构定义为:struct BinaryTreeNode // a node in the binary tree{int m_nValue; // value of nodeBinaryTreeNode *m_pLeft; // left child of nodeBinaryTreeNode *m_pRight; // right child of node};
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 支持支持 反对反对

共 1 个关于本帖的回复 最后回复于 2013-8-16 10:44

沙发
陈荣莲 八品司务 发表于 2013-8-16 10:44:44 | 只看该作者
研发埠培训中心
Usebacktracking and recurison. We need a stack to help backtracking the path.struct TreeNode {  int data;  TreeNode * left;  TreeNode * right;};voidprintPaths(TreeNode * root, int sum) {  int path[MAX_HEIGHT];  helper(root, sum, path, 0);}voidhelper(TreeNode * root, int sum, int path[], int top) {  path[top++] = root.data;  sum -= root.data;  if (root->left == NULL && root->right==NULL) {    if (sum == 0) printPath(path, top);  } else {    if (root->left != NULL) helper(root->left, sum, path,top);    if (root->right!=NULL) helper(root->right, sum, path,top);  }  top --;  sum += root.data;    //....}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注我们

360网站安全检测平台