我正在尝试用一种算法来改变数字二叉树的基础。
例如,假设我有一组基于8的树,主根是4,我需要扫描树并将其更改为5(我可以假设树可以更改)
我似乎无法想出这个公式,我知道我必须使用递归来做,但是一旦我改变了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);
}