zoukankan      html  css  js  c++  java
  • 在二元树中找出和为某一值的所有路径

    /*
    在二元树中找出和为某一值的所有路径(树)
    题目:输入一个整数和一棵二元树。
    从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。
    打印出和与输入整数相等的所有路径。
    例如 输入整数 22 和如下二元树
         10
       /  
      5   12
      /    
    7
    则打印出两条路径:10, 12 和 10, 5, 7
    我们定义的二元查找树 节点的数据结构如下:
    #define Element int
    struct TreeNode
    {
         Element data;
         struct TreeNode *left;
         struct TreeNode *right;
    };
    typedef struct TreeNode *Position;
    typedef     Position BinarySearchTree;
    */
    
    
    #include <iostream>
    #include <iomanip>
    #include <assert.h>
    #include "/home/zxh/desktop/code/dataStructuresAndAlgorithmInC/BinarySearchTree.h"
    using namespace std;
    
    void print_all_paths(int number, int tmp, BinarySearchTree bst, int depth, int ctrl)//ctrl:0=root 1=left 2=right
    {
         if(NULL == bst)
              return;
    
         cout<<setw(depth);
         if(0 == ctrl)
              cout<<"root: ";
         else if(1 == ctrl)
              cout<<"left: ";
         else if(2 == ctrl)
              cout<<"right: ";
         cout<<bst->data;
    
         if(NULL == bst->left && NULL == bst->right)
         {
              if(number == tmp + bst->data)
                   cout<<" -->succeed"<<endl;
              else
                   cout<<" -->fail"<<endl;
              return;
         }
         else // bst is not a leaf
         {
    cout<<endl; print_all_paths(number, tmp + bst->data, bst->left, depth + 6, 1); print_all_paths(number, tmp + bst->data, bst->right, depth + 6, 2); } } void build_tree(BinarySearchTree* pbst) { assert(NULL != pbst); int array[] = {10, 6, 14, 4, 8 ,12, 16, 1, 3, 7, 9, 11, 20, 18, 17}; for(int i = 0; i != sizeof(array)/sizeof(array[0]) ; ++i) Insert(array[i], pbst); } int main(int argc, char const *argv[]) { BinarySearchTree bst = NULL; build_tree(&bst); if(NULL == bst)cout<<"NULL"<<endl; int n; cout<<"please input a number : "; cin>>n; print_all_paths(n, 0, bst, 2, 0); return 0; }

      

  • 相关阅读:
    sc输入输出
    sc基本语法
    sp启动执行
    sp的配置安装
    软件质量属性的代码层实现
    以淘宝网为例描述常见质量属性场景
    架构漫谈读后感
    《架构之美》阅读笔记三
    《架构之美》阅读笔记二
    大三寒假学习进度笔记Day25
  • 原文地址:https://www.cnblogs.com/zxh1210603696/p/3249058.html
Copyright © 2011-2022 走看看