牛客题霸 [ 实现二叉树先序,中序和后序遍历]C++题解/答案
生活随笔
收集整理的這篇文章主要介紹了
牛客题霸 [ 实现二叉树先序,中序和后序遍历]C++题解/答案
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
牛客題霸 [ 實現二叉樹先序,中序和后序遍歷]C++題解/答案
題目描述
分別按照二叉樹先序,中序和后序打印所有的節點。
題解:
先序,中序,后序都是按照各自規律的
先序的遍歷順序是中前后
中序是前中后
后序是前后中
這個決定了遞歸的順序
比如先序:
先存當前節點
然后遍歷左子樹
最后遍歷右子樹
中序:
先遍歷左子樹
保存節點
再遍歷右子樹
代碼:
/*** struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/class Solution { public:/*** * @param root TreeNode類 the root of binary tree* @return int整型vector<vector<>>*/ void Left(TreeNode* root,vector<int>& vec){if (root != nullptr) {vec.push_back(root->val);Left(root->left, vec);Left(root->right, vec);}}void Center(TreeNode* root, vector<int>& vec) {if (root != nullptr) {Center(root->left, vec);vec.push_back(root->val);Center(root->right, vec);}}void Right(TreeNode* root, vector<int>& vec) {if (root != nullptr) {Right(root->left, vec);Right(root->right, vec);vec.push_back(root->val);}}vector<vector<int> > threeOrders(TreeNode* root) {// write code herevector<vector<int>> output(3);Left(root, output[0]);Center(root, output[1]);Right(root, output[2]);return output;} };總結
以上是生活随笔為你收集整理的牛客题霸 [ 实现二叉树先序,中序和后序遍历]C++题解/答案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 比亚迪仰望全国首家中心店开业:总面积超
- 下一篇: 牛客题霸 [两个链表的第一个公共结点]