二叉樹的前序遍歷
阿新 • • 發佈:2017-05-12
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;View Code9 * 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 };
一開始寫這玩意,一直把vector寫在函數裏面,怎麽都過不了。
原因是遞歸調用每一次都會重新定義一次,最後的返回值只會有一個。
然後百度了半天怎麽樣才可以在遞歸調用的時候,怎樣才可以不被重新定義,然而都沒有成功。最後百度到一篇是直接寫在外面就AC了。真的好氣,好蠢。
怎麽就沒想到寫在外面呢。
非遞歸實現的有空在做一做。
二叉樹的前序遍歷