目錄
範例
的中文翻譯為:
首頁 後端開發 C++ 在C語言中,將二元樹的右側視圖列印出來

在C語言中,將二元樹的右側視圖列印出來

Sep 16, 2023 pm 11:13 PM
c語言 二元樹 右視圖

任務是列印給定二元樹的右節點。首先使用者將插入資料以建立二元樹,然後列印所形成的樹的右視圖。

在C語言中,將二元樹的右側視圖列印出來

上圖展示了使用節點10、42、93、14、35、96、57和88創建的二元樹,其中選擇並顯示在樹的右側的節點。例如,10、93、57和88是二元樹的最右節點。

範例

Input : 10 42 93 14 35 96 57 88
Output : 10 93 57 88
登入後複製

每個節點都有兩個指針,即左指針和右指針。根據這個問題,程式只需遍歷右節點。因此,不需要考慮節點的左子節點。

右邊視圖儲存了所有那些是其所在層級的最後一個節點的節點。因此,我們可以簡單地使用遞歸方法以這樣的方式儲存和存取節點,即先遍歷右子樹再遍歷左子樹。每當程式偵測到節點的層級大於前一個節點的層級時,前一個節點被顯示出來,因為它將是其所在層級的最後一個節點。

下面的程式碼展示了給定演算法的C語言實作

#演算法##
START
   Step 1 -> create node variable of type structure
      Declare int data
      Declare pointer of type node using *left, *right
   Step 2 -> create function for inserting node with parameter as item
      Declare temp variable of node using malloc
      Set temp->data = item
      Set temp->left = temp->right = NULL
      return temp
   step 3 -> Declare Function void right_view(struct node *root, int level, int *end_level)
      IF root = NULL
         Return
      IF *end_level < level
         Print root->data
         Set *end_level = level
         Call right_view(root->right, level+1, end_level)
         Call right_view(root->left, level+1, end_level)
   Step 4 -> Declare Function void right(struct node *root)
      Set int level = 0
      Call right_view(root, 1, &level)
   Step 5 -> In Main()
      Pass the values for the tree nodes using struct node *root = New(10)
      Call right(root)
STOP
登入後複製

Example

的中文翻譯為:

範例

#include<stdio.h>
#include<stdlib.h>
struct node {
   int data;
   struct node *left, *right;
};
struct node *New(int item) {
   struct node *temp = (struct node *)malloc(sizeof(struct node));
   temp->data = item;
   temp->left = temp->right = NULL;
   return temp;
}
void right_view(struct node *root, int level, int *end_level) {
   if (root == NULL) return;
   if (*end_level < level) {
      printf("%d\t", root->data);
      *end_level = level;
   }
   right_view(root->right, level+1, end_level);
   right_view(root->left, level+1, end_level);
}
void right(struct node *root) {
   int level = 0;
   right_view(root, 1, &level);
}
int main() {
   printf("right view of a binary tree is : ");
   struct node *root = New(10);
   root->left = New(42);
   root->right = New(93);
   root->left->left = New(14);
   root->left->right = New(35);
   root->right->left = New(96);
   root->right->right = New(57);
   root->right->left->right = New(88);
   right(root);
   return 0;
}
登入後複製

輸出

如果我們執行上面的程序,它將產生以下輸出。

right view of a binary tree is : 10 93 57 88
登入後複製

以上是在C語言中,將二元樹的右側視圖列印出來的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
2 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

C語言數據結構:樹和圖的數據表示與操作 C語言數據結構:樹和圖的數據表示與操作 Apr 04, 2025 am 11:18 AM

C語言數據結構:樹和圖的數據表示與操作樹是一個層次結構的數據結構由節點組成,每個節點包含一個數據元素和指向其子節點的指針二叉樹是一種特殊類型的樹,其中每個節點最多有兩個子節點數據表示structTreeNode{intdata;structTreeNode*left;structTreeNode*right;};操作創建樹遍歷樹(先序、中序、後序)搜索樹插入節點刪除節點圖是一個集合的數據結構,其中的元素是頂點,它們通過邊連接在一起邊可以是帶權或無權的數據表示鄰

C語言文件操作難題的幕後真相 C語言文件操作難題的幕後真相 Apr 04, 2025 am 11:24 AM

文件操作難題的真相:文件打開失敗:權限不足、路徑錯誤、文件被佔用。數據寫入失敗:緩衝區已滿、文件不可寫、磁盤空間不足。其他常見問題:文件遍歷緩慢、文本文件編碼不正確、二進製文件讀取錯誤。

c語言函數返回值的類型有哪些 c語言函數返回值的類型匯總 c語言函數返回值的類型有哪些 c語言函數返回值的類型匯總 Apr 03, 2025 pm 11:18 PM

C語言函數返回值類型包括int、float、double、char、void以及指針類型。 int用於返回整數,float和double用於返回浮點數,char返回字符。 void表示函數不返回任何值。指針類型返回內存地址,注意避免內存洩漏。結構體或聯合體可返回多個相關數據。

c語言函數的概念及其定義格式 c語言函數的概念及其定義格式 Apr 03, 2025 pm 11:33 PM

C语言函数是可重复使用的代码块,接收参数进行处理,返回结果。它类似于瑞士军刀,功能强大,需要谨慎使用。函数包括定义格式、参数、返回值、函数体等元素。高级用法包括函数指针,递归函数和回调函数。常见错误是类型不匹配、忘记声明原型。调试技巧包括打印变量、使用调试器。性能优化使用内联函数。函数设计应遵循单一职责原则。熟练掌握C语言函数可以显著提高编程效率和代码质量。

c語言如何輸出倒數 c語言如何輸出倒數 Apr 04, 2025 am 08:54 AM

如何在 C 語言中輸出倒數?回答:使用循環語句。步驟:1. 定義變量 n 存儲要輸出的倒數數字;2. 使用 while 循環持續打印 n 直到 n 小於 1;3. 在循環體內,打印出 n 的值;4. 在循環末尾,將 n 減去 1 以輸出下一個更小的倒數。

c語言函數怎麼表示最大公約數教程 c語言函數怎麼表示最大公約數教程 Apr 03, 2025 pm 11:21 PM

C 語言中高效優雅地求最大公約數的方法:使用輾轉相除法,通過不斷除數取餘直到餘數為 0 的方式求解。提供了遞歸和迭代兩種實現方式,遞歸實現簡潔明了,迭代實現性能更高,更穩定。注意處理負數和 0 的情況,並考慮性能優化,但輾轉相除法本身已足夠高效。

c語言函數括號裡面指針參數有哪些? c語言函數括號裡面指針參數有哪些? Apr 03, 2025 pm 11:48 PM

C 語言函數的指針參數直接操作調用者傳遞的內存區域,包括指向整數、字符串或結構體的指針。使用指針參數時,需要謹慎修改指針指向的內存,以避免出錯或內存問題。對於指向字符串的雙重指針,修改指針本身會導致指向新字符串,需要注意內存管理。處理指向結構體或數組的指針參數時,則需要仔細檢查指針類型和邊界以避免越界訪問。

如何用c語言函數指針求一維數組最大值教程 如何用c語言函數指針求一維數組最大值教程 Apr 03, 2025 pm 11:45 PM

函數指針的靈活應用:利用比較函數尋找數組最大值。首先,定義比較函數類型 CompareFunc,再編寫比較函數 compareMax(a, b)。 findMax 函數接受數組、數組大小和比較函數參數,使用比較函數循環比較數組元素找到最大值。這種方法代碼可複用性強,體現高階編程思想,有利於解決更複雜問題。

See all articles