4

作者: xiaoyanhan | 来源:发表于2016-10-14 16:55 被阅读7次

    题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如 输入整数22和如下二元树

    Paste_Image.png

    则打印出两条路径:10, 12和10, 5, 7。

    struct TreeNode {  
      int data;  
      TreeNode * left;  
      TreeNode * right;  
    };   
    void printPaths(TreeNode * root, int sum) {  
      int path[MAX_HEIGHT];  
      helper(root, sum, path, 0);  
    }  
    void helper(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;  
    } 
    

    相关文章

      网友评论

          本文标题:4

          本文链接:https://www.haomeiwen.com/subject/pitnyttx.html