سورس c++ درخت دودویی
سلام خدمات کاربران عزیز
در این پست باز به سراغ سورس برنامه رفتیم و سورس درخت دودویی رو آماده کردیم که در زبان برنامه نویسی c++ کدنویسی شده رو برای دانلود قرار میدیم.
این سورس رو متاسفانه در سایت های فروش محصولات برنامه نویسی دارند با قیمت بالایی میفروشند. که شما میتوانید به راحتی از این سایت به صورت رایگان دانلود کنید .
دوستان عزیزی که در رشته مهندسی نرم افزار یا سخت افزار دانشجو هستند در درس برنامه نویسی که در مورد c++ هست احتمال زیاد از این کدها استفاده میکنند یا در درس ساختمان داده که مبحث درخت دودویی رو دارند خیلی خیلی به کار میاد .
توضیحاتی در مورد درخت دودویی بدیم :
در علوم رایانه، یک درخت دودویی یک ساختمان دادهٔ درخت است که در آن هر گره حداکثر دو گره فرزند دارد که فرزندان راست و چپ نامیده میشوند. در درخت دودویی، در جهٔ هر گره حداکثر میتواند دو باشد. درختهای دودویی برای پیادهسازی درخت جستجوی دودویی و انبوه دودویی و برای جستجوی کارآمد و مرتبسازی استفاده میشود. درخت دودویی یک حالت خاص از یک درخت kتای است، که در آن k برابر ۲ میباشد.
انواع درختان دودویی :
چرخش درخت عملیات بسیار رایج روی درختان دودویی خود متعادل است.
درخت دودویی ریشهدار یک درخت با یک گره ریشه است که در آن هر گره حداکثر دو فرزند دارد.
درخت دودویی پر(گاهی اوقات درخت دودویی مناسب یا ۲_ درخت یا درخت اکیداً دودویی گفته میشود) یک درخت که در آن هر گره به غیر از برگها دارای دو فرزند است. هر گره در درخت دودویی دارای دو فرزند یا بدون فرزند است. یک درخت پر گاهیاوقات بهطور ابهامانگیزی به عنوان درخت دودویی کامل تعریف میشود. فیزیکدانان یک درخت دودویی را بهعنوان درخت دودویی پر تعریف میکنند.
یک تبارنامه که روی یک درخت دودویی کامل به عمق ۴ نگاشت شدهاست
یک درخت دودویی کامل (perfect) یک درخت دودویی پر است که در آن همه برگها دارای عمق یکسان و یا همسطح باشند، و در آن هر پدری دارای دو فرزند است.(به طور مبهم درخت دودویی کامل نامیده میشود (بعدی را مشاهده کنید).) نمونهای از یک درخت دودویی کامل را میتوان در تبارنامه از یک فرد به عمق دادهشده مشاهده کرد، بهطوریکه هر فرد دقیقاً دو پدر و مادر (یک مادر و یک پدر) دارد؛ توجه داشتهباشید که این معکوس قرارداد معمول درخت پدر\ فرزند است، و این درختان خلاف جهت معمول هستند (ریشه در پایین).
یک درخت دودویی کامل (complete) یک درخت دودویی است که در آن هر سطح، به جز احتمالاً آخرین سطح، بهطور کامل پر شدهاست، و همهٔ گرهها تا جایی که ممکن است در چپ درخت قرار میگیرند. درختی که این استثناء را داشتهباشد که سطح آخر آن کاملاً پر نباشد، درخت دودویی تقریباً کامل یا نزدیک به درخت دودویی کامل گویند. این نوع درختان از ساختمان دادهٔ ویژهای به نام هیپ استفاده میکنند.
درخت دودویی کامل نا محدود درختی است که دارای بینهایت سطح قابلشمارش میباشد، که در آن هر گره دارای دو فرزند است بهطوریکه گرههای 2d در سطح d هستند. مجموعهٔ گرهها شمارای نامتناهی است، ولی مجموعهای از بینهایت مسیر از ریشه، ناشمارا است، که دارای عدد کاردینالیتی پیوسته است. این مسیرها رابطهٔ دوسویی را با نقاط مجموعۀ کانتر، یا مجموعهای از اعداد گنگ حفظ میکند.
درختی دودویی متوازن که معمولاً بهعنوان درخت دودویی است که در آن اختلاف عمق زیردرخت چپ و راست آن ۱ یا کمتر است، اگر چه به طور کلی درخت دودویی است که هیچ برگی نسبت با برگهای دیگر فاصلهٔ زیادی تا ریشه ندارد. (طرح توازن متمایز اجازه میدهد که تعریف متفاوتی از «بسیار دورتر» ارائه شود) درخت دودویی هنگامی متوازن است که مطابق تعریف عمق آن قابل پیش بینی باشد. (بسیاری از گرهها از ریشه تا برگ پیموده میشوند، چنانکه شمارهٔ ریشه به عنوان گرهٔ ۰ و بقیهٔ گرهها اعداد ۱ ۲ … n را میگیرند) این عمق (ارتفاع هم نامیده میشود) برابر قسمت صحیح (log2(n است، که در آن n تعداد گرهها در درخت متوازن است. مثلاً، برای درخت متوازنی که دارای ۱ گره است، log2(1) = ۰، درنتیجه عمق درخت برابر صفر است. برای یک درخت متوازن با ۱۰۰ گره، log2(100) = ۶٫۶۴، درنتیجه عمق درخت برابر ۶ است.
درخت منحط درختی است که هر گرهٔ والدین فقط به یک گرهٔ فرزند متصل است. این به این معنی است که عملکرد این درخت مانند رفتار ساختمان دادهٔ لیست پیوندی است.
توجه داشتهباشید که اغلب در ادبیات متفاوتند، به خصوص در رابطه با معنای کلمات “کامل” و “پر”.
دیدگاه کاربران
تعداد دیدگاه های کاربران : ۰ دیدگاه