首页 > 代码库 > 二叉树的前序遍历
二叉树的前序遍历
给出一棵二叉树,返回其节点值的前序遍历。
样例
给出一棵二叉树 {1,#,2,3}
,
1
2
/
3
返回 [1,2,3]
挑战
你能使用非递归实现么?
标签
View Code
递归 二叉树 二叉树遍历 非递归
递归实现:
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 };
一开始写这玩意,一直把vector写在函数里面,怎么都过不了。
原因是递归调用每一次都会重新定义一次,最后的返回值只会有一个。
然后百度了半天怎么样才可以在递归调用的时候,怎样才可以不被重新定义,然而都没有成功。最后百度到一篇是直接写在外面就AC了。真的好气,好蠢。
怎么就没想到写在外面呢。
非递归实现的有空在做一做。
二叉树的前序遍历
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。