在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
登入後複製
ExampleSTART 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
的中文翻譯為:
範例#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;
}
登入後複製
輸出如果我們執行上面的程序,它將產生以下輸出。 #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中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

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

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

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

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

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

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

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

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