(۳۰ فروردین ۱۳۹۱ ۰۳:۳۵ ب.ظ)yaser_ilam_com نوشته شده توسط: دوست من یادت نره سوال چی خواسته " اندازه کدام دو کد " یکسان است .
ابتدا کوچکترین دو کد را پیدا می کنیم D که همان M-1 و B که همان M می باشد کوچکترین هستند (به M مقدار میدهیم تا بدست اید)
حال این دو را در پایین ترین سطح(برگها) قرار می دهیم جمع اینها معادل ۲M-1 می شود . C کوچکتر از ۲M-1 لذا سمت چپ قرار می گیر جمع این دو معادل ۳M می باشد .E کوچکتر از ۳M لذا سمت چپ قرار می گیرد جمع این دو معادل ۴M+2 .
A کوچکتر از ۴M+2 لذا سمت چپ قرار می گیرد و جمع این دو معادل ۵M+5 که همان ریشه است می باشد .
دوباره از ریشه به پایین ادامه م دهیم :
ریشه معادل ۵M+5 و فرزند چپ و راست به ترتیب به صورت A و ۴M+2 قرار می گیرد A برگ است و گره ۴M+2 فرزند چپ و راست به ترتیب به صورت E و ۳M است .
E برگ است و گره ۳M فرزند چپ و راست به ترتیب به صورت C و ۲M-1 قرار می گیرد C برگ است و گره ۲M-1 دارای فرزند چپ و راست به صورت M-1 و M یعنی همان B و D .
کد A بصورت ۰ .
کد B بصورت ۱۱۱۱ .
کد C بصورت ۱۱۰/
کد D بصورت ۱۱۱۰ .
کد E بصورت ۱۰/
لذا B , D دارای اندازه یکسان معادل ۴ هستند .
فکر کنم یه جای کار اشتباه میکنی ، بعد از اینکه B,D رو انتخاب میکنی و جمعشون میشه ۲M-1 دوباره باید جدول رو Update کنی و دو حرفی که کمترین تکرار رو دارن رو انتخاب کنی .
یعنی اگه مثلا M = 4 در نظر بگیری داریم :
A=7 , B^D=7 , C=5 , E=6
که در اینصورت C , E رو انتخاب میکنیم و به عنوان برگ های درخت جداگانه از B^D قرار میدهیم.تا اینجا یک جنگل از دو درخت C^E , B^D داریم و دوباره جدول رو Update میکنیم و الا آخر... درسته؟