二叉樹題目----1 前序中序后序遍歷二叉樹并返回相應的遍歷(不是打印)

前序遍歷

在這里插入圖片描述

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*//*** Note: The returned array must be malloced, assume caller calls free().*/
int *array;
int size;void _preorderTraversal(struct TreeNode *root){if(root == NULL){return ;}//處理根結點array[size++]=root->val;_preorderTraversal(root->left);_preorderTraversal(root->right);
}int* preorderTraversal(struct TreeNode* root, int* returnSize){array = (int *)malloc(sizeof(int)*100*1000);size =0  ;_preorderTraversal(root);*returnSize = size;return array;
}

中序遍歷

在這里插入圖片描述

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*//*** Note: The returned array must be malloced, assume caller calls free().*/int *array;
int size;void _preorderTraversal(struct TreeNode *root){if (root == NULL){return;}//處理根結點_preorderTraversal(root->left);array[size++] = root->val;_preorderTraversal(root->right);
}int* inorderTraversal(struct TreeNode* root, int* returnSize){array = (int *)malloc(sizeof(int)* 100 * 1000);size = 0;_preorderTraversal(root);*returnSize = size;return array;
}

后序遍歷

在這里插入圖片描述

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*//*** Note: The returned array must be malloced, assume caller calls free().*/int *array;
int size;void _preorderTraversal(struct TreeNode *root){if (root == NULL){return;}//處理根結點_preorderTraversal(root->left);_preorderTraversal(root->right);array[size++] = root->val;
}
int* postorderTraversal(struct TreeNode* root, int* returnSize){array = (int *)malloc(sizeof(int)* 100 * 1000);size = 0;_preorderTraversal(root);*returnSize = size;return array;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/383166.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/383166.shtml
英文地址,請注明出處:http://en.pswp.cn/news/383166.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

二叉樹題目----2 檢查兩顆樹是否相同 和 對稱二叉樹的判定

檢查兩顆樹是否相同 思路 根要相等 p->val q->val左子樹相等 isSameTree(p->left,q->left)右子樹也要相等 isSameTree(p->right,q->right) /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* …

二叉樹題目---3 另一個樹的子樹 AND 二叉樹最大深度

另一個樹的子樹 思路 兩個數都遍歷一遍,找到一個根結點相同時,判斷以這個根結點為首的二叉樹是否相等 前序遍歷判斷兩棵樹是否相同對于返回值的處理是難點 bool isSameTree(struct TreeNode *p, struct TreeNode *q) {if(p NULL && q NULL)…

二叉樹題目----4 前序遍歷重構二叉樹 AND 求二叉樹中所有結點的個數

前序遍歷重構二叉樹 思路 整個二叉樹用數組存儲因為先序遍歷它先遍歷根,再遍歷左,左邊沒有跑完是不會去遍歷右邊的,所以遍歷左子樹,就是數組元素每回向后一個,個數-1遍歷右邊時,就是數組起始位置左子樹跑到…

二叉樹的進階操作---(求二叉樹中所有結點個數,求葉子結點個數,求第k層結點個數;在二叉樹中查找某一結點;層序遍歷;判斷是否為完全二叉樹)

typedef struct TreeNode {struct TreeNode *left;struct TreeNode *right;char val; }TreeNode;typedef struct Result{TreeNode * root; //構建的樹的根結點int used; //構建過程中用掉的val個數 } Result;求二叉樹中所有結點個數 void TreeSize(TreeNode *root, int …

c++中的智能指針詳解(RAII, auto_ptr的原理及其改進,unique_ptr的原理,shared_ptr的原理,shared_ptr的缺陷及其改進)

為什么需要智能指針 代碼中途退出,也能保證資源的合理釋放,在c中沒有垃圾回收機制的情況下,智能指針就可以保證我們申請的資源,最后忘記釋放的問題,防止內存泄露,也幫我們減少了一定的負擔,不用…

Job for mariadb.service failed because the control process exited with error code. Se

錯誤:[rootlocalhost ~]# systemctl start mariadb.service Job for mariadb.service failed because the control process exited with error code. See “systemctl status mariadb.service” and “journalctl -xe” for details. 解決辦法: [rootl…

二叉樹題目----5 平衡二叉樹 AND 根據二叉樹創建字符串

平衡二叉樹 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/int MAX(int a,int b) {return a > b ? a : b; }//求高度 int getHeight(struct TreeNode *root){if(root NULL){…

再寫堆(堆的性質,向下調整,建堆,堆的插入刪除初始化,堆排序,TopK問題)

堆的概念 如果有一個關鍵碼的集合K{k0,k1,k2,…,kn-1},把它的所有元素按完全二叉樹的順序存儲方式存儲再一個一維數組中&#xff0c;并滿足:Ki<K2i1且Ki<K2i1(Ki > K2i1 且 Ki > K2i2),i0,1,2,3…。則稱為小堆(或大堆)。將根結點最大的堆叫做最大堆或大根堆&#…

二叉樹題目----6 二叉樹的最近公共祖先 AND 二叉樹搜索樹轉換成排序雙向鏈表

二叉樹的最近公共祖先 思路 在左、右子樹中分別查找是否包含p或q&#xff1a;如果以下兩種情況&#xff08;左子樹包含p&#xff0c;右子樹包含q/左子樹包含q&#xff0c;右子樹包含p&#xff09;&#xff0c;那么此時的根節點就是最近公共祖先如果左子樹包含p和q&#xff0c;…

二叉樹題目 ----7 前序中序遍歷構造二叉樹

前序中序遍歷構造二叉樹 思路 在前序中找根結點根據根結點 中序&#xff0c;分成左右兩棵子樹根據子樹長度&#xff0c;把前序分成左右兩顆子樹遞歸處理子樹 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* s…

關聯式容器(map,set,multimap,multiset)

關聯式概念 STL中的部分容器&#xff0c;比如&#xff1a;vector、list、deque、forward_list(C11)等&#xff0c;這 些容器統稱為序列式容器&#xff0c;因為其底層為線性序列的數據結構&#xff0c;里面存儲的是元素本身。關聯式容器也是用來存儲數據的&#xff0c;與序列式…

詳解 二叉搜索樹-----AVL樹

二叉搜索樹 根結點比左子樹中所有結點都大根結點比右子樹所有結點都小最小的元素在最左側最大的元素在最右側中序遍歷有序 具有以上的特征的二叉樹就是二叉搜索樹也叫二叉排序數 二叉搜索樹的操作 查找 要保存查找值的雙親&#xff0c;以便于后續執行插入操作 Node* Find(…

json格式與cJSON函數庫

json的格式 鍵/值對 key:value&#xff0c;用半角冒號分割文檔對象 JSON對象寫在花括號中&#xff0c;可以包含多個鍵/值對。數組 JSON 數組在方括號中書寫&#xff1a; 數組成員可以是對象&#xff0c;值&#xff0c;也可以是數組(只要有意義)。 { "stars":[ { &qu…

HTTP清晰的學習筆記

HTTP協議—應用層 請求消息(Request)—瀏覽器給服務器發 包含四部分 請求行&#xff1a;說明請求類型&#xff0c;要訪問的資源&#xff0c;以及使用的http版本請求頭&#xff1a;說明服務器要使用的附加信息,由鍵值對構成的空行&#xff1a;空行是必須要有的&#xff0c;即…

如何在 Centos7 x86_64下將vim一鍵配置為一款強大的C++,IDE

vim功能很強大&#xff0c;但是對于我這樣的小白很不友好 然后就有一位大佬&#xff0c;為了輔助我這樣的菜雞&#xff0c;然后供我們一鍵搞定&#xff0c;在vim暢快編寫代碼的功能。 首先強烈不推薦在root用戶下使用&#xff0c;確保電腦連著網。在普通用戶下執行此命令 cur…

聽說今天發表文章給勛章

聽說今天發表文章給勛章

詳解string容器(應用+模擬實現,string練習題)

為什么要有string容器 string&#xff1a;其實就是一個字符串,c對字符串進行了封裝的&#xff0c;封裝到一個類里面&#xff0c;這樣用戶就不用擔心開辟空間的問題&#xff0c;只需要往string類里放字符串就可以了&#xff0c;string其實還可以自增長 很多人就會有一個疑問&am…

淺拷貝+引用計數--寫時拷貝---模擬實現string容器

引用計數 深拷貝 多個對象共享同一份資源時&#xff0c;最后能夠保證該資源只被釋放一次 應該由哪個對象釋放資源&#xff1f; 由最后一個使用該資源的對象去釋放 怎么知道一個對象是最后一個使用該資源的對象&#xff1f; 給一個計數&#xff0c;記錄使用該資源對象的個數 實…

詳解vector容器(應用+模擬實現,vector相關練習題)

vector容器 動態的順序表&#xff0c;數組。 vector操作 vector操作及其概念 構造 vector<int>v1;vector<int>v2(10, 5);vector<int>v3(v2);int array[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };vector<int>v4(array, array sizeof(array) / sizeof(a…

詳解list容器(應用+模擬實現)

list容器 帶頭結點的雙向循環鏈表 list操作 list容器的概念及其操作 構造和銷毀 list<int>L1;list<int>L2(10, 5);vector<int>v{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };list<int>L3(v.begin(), v.end());list<int>L4(L3);元素訪問 cout << L3.…