更改二叉树的数字基础

时间:2013-12-28 16:47:39

标签: algorithm binary-tree

我正在尝试用一种算法来改变数字二叉树的基础。 例如,假设我有一组基于8的树,主根是4,我需要扫描树并将其更改为5(我可以假设树可以更改) enter image description here

我似乎无法想出这个公式,我知道我必须使用递归来做,但是一旦我改变了1个根,我就会失去所有连接它的儿子。 我怎么处理这个?

1 个答案:

答案 0 :(得分:1)

这是伪代码: -

    void preorder(node* p) {

      if(p==null)
          return

      p->data = change_base(p->data,oldbase,newbase);
      preorder(p->left);  
      preorder(p->right);

    }


    int change_base(int k,int old,int new) {

       base10 = 0;
       while(k>0) {

          base10 = base10*old + k%10;
          k = k/10;
       }

       newbase = 0;

       while(base10>0) {

          r = base10%new;
          newbase = newbase*10 + r; 
          base10 = base10/10; 

      }

     return(newbase);

  }