ページ 11

二分木insertについて

Posted: 2020年6月20日(土) 11:36
by mo56
下のソースコードを、insert􏰀の引数に木􏰀の深さをカウントするための􏰀levを追加して、追加する節点の木における深さ(レベル)を返すように変更したいのですがどのようにしたら良いでしょうか?
void insert(struct vertex *p,int x)
{
struct vertex *pt;

if(p->data>x&&p->l!=NULL)
return(insert(p->l,x));
if(p->data<x&&p->r!=NULL)
return(insert(p->r,x));
pt=newv();
pt->data=x;
pt->l=pt->r=NULL;
if(p->data>x)
p->l=pt;
else
p->r=pt;
}

Re: 二分木insertについて

Posted: 2020年6月22日(月) 02:07
by みけCAT
この質問で書かれているコードが参考になりそうです。
挿入した木の深さを返す関数 - プログラマ専用SNS ミクプラ
リンク先のinsert関数において、levは節点pの深さになっているので、
追加した節点ptの深さを返すようにするにはlevのかわりにlev+1をreturnするようにするとよさそうです。