1. 程式人生 > >二叉樹的前序遍歷

二叉樹的前序遍歷

src isp vector ram 技術 前序遍歷 一個 遞歸調用 遞歸

給出一棵二叉樹,返回其節點值的前序遍歷。

樣例

給出一棵二叉樹 {1,#,2,3},

   1
         2
    /
   3

返回 [1,2,3]

挑戰

你能使用非遞歸實現麽?

標簽 遞歸 二叉樹 二叉樹遍歷 非遞歸 遞歸實現: 技術分享
 1 /**
 2  * Definition of TreeNode:
 3  * class TreeNode {
 4  * public:
 5  *     int val;
 6  *     TreeNode *left, *right;
 7  *     TreeNode(int val) {
 8  *         this->val = val;
9 * this->left = this->right = NULL; 10 * } 11 * } 12 */ 13 14 class Solution { 15 public: 16 vector<int> s; 17 /** 18 * @param root: The root of binary tree. 19 * @return: Preorder in vector which contains node values. 20 */ 21 22 vector<int
> preorderTraversal(TreeNode *root) { 23 // write your code here 24 if(root==NULL) 25 return s; 26 if(root!=NULL) 27 { 28 s.push_back(root->val); 29 preorderTraversal(root->left); 30 preorderTraversal(root->right);
31 return s; 32 } 33 } 34 };
View Code

一開始寫這玩意,一直把vector寫在函數裏面,怎麽都過不了。

原因是遞歸調用每一次都會重新定義一次,最後的返回值只會有一個。

然後百度了半天怎麽樣才可以在遞歸調用的時候,怎樣才可以不被重新定義,然而都沒有成功。最後百度到一篇是直接寫在外面就AC了。真的好氣,好蠢。

怎麽就沒想到寫在外面呢。

非遞歸實現的有空在做一做。

二叉樹的前序遍歷