[容易]二叉树的前序遍历
题目来源:http://www.lintcode.com/zh-cn/problem/binary-tree-preorder-traversal/
C++版 VS2012测试通过
1 //#include <iostream>
2 //#include <vector>
3 //using namespace std;
4
5 //Definition of TreeNode
6 //class TreeNode {
7 //public:
8 // int val;
9 // TreeNode *left, *right;
10 // TreeNode(int val=-1) {
11 // this->val = val;
12 // this->left = this->right = NULL;
13 // }
14 //};
15
16 //输入前序遍历,创建二叉树
17 //举例输入ABDH#K###E##CFI###G#J##
18 //void CreateBiTree(TreeNode **T)//*T是指向BiTNode的指针
19 //{
20 // *T=new TreeNode;
21 // if(*T==NULL)//如果*T还是指向NULL,表示内存分配失败,退出程序
22 // exit(OVERFLOW);
23 // char ch;
24 // cin>>ch;
25 // if(ch=='#')
26 // *T=NULL;
27 // else
28 // {
29 // (*T)->val=ch;//*T指向的节点的data分配内容,即生成根节点
30 // CreateBiTree(&((*T)->left));//创建&(*T)->lchild临时变量,传入CreateBiTree,构造左子树
31 // CreateBiTree(&((*T)->right));//创建&(*T)->rchild临时变量,传入CreateBiTree,构造右子树
32 // }
33 //}
34
35 class Solution {
36 public:
37 /**
38 * @param root: The root of binary tree.
39 * @return: Preorder in vector which contains node values.
40 */
41 vector<int> preorder;
42 void traverse(TreeNode *root) {
43 if (root == NULL) {
44 return;
45 }
46 preorder.push_back(root->val);
47 traverse(root->left);
48 traverse(root->right);
49 }
50 vector<int> preorderTraversal(TreeNode *root) {
51 // write your code here
52 preorder.clear();
53 traverse(root);
54 return preorder;
55 }
56 };
57
58 //测试
59 //int main()
60 //{
61 // Solution s;
62 // vector<int> preorder;
63 //
64 // TreeNode **pp;//定义指向BiTNode的二级指针pp
65 // TreeNode *p;//定义指向BiTNode的指针p
66 // pp=&p;//pp指向p
67 // p=NULL;//初始化p指向NULL
68 // CreateBiTree(pp);//传入指向p的地址,创建二叉树
69 //
70 // preorder=s.preorderTraversal(p);//传入指向BiTNode的地址,前序遍历创建好的二叉树
71 // for(int i=0;i<preorder.size();i++)
72 // putchar(preorder.at(i));
73 //}
Python2.7版 spider测试通过
1 """ 2 Definition of TreeNode: 3 class TreeNode: 4 def __init__(self, val): 5 self.val = val 6 self.left, self.right = None, None 7 """ 8 9 class TreeNode: 10 def __init__(self,val,left,right): 11 self.val=val 12 self.left=left 13 self.right=right 14 15 class Solution: 16 """ 17 @param root: The root of binary tree. 18 @return: Preorder in ArrayList which contains node values. 19 """ 20 def preorderTraversal(self, root): 21 # write your code here 22 preorder = [] 23 if root==None: 24 return [] 25 stack=[] 26 p=root 27 while p is not None or len(stack)!=0: 28 if p: 29 stack.append(p) 30 preorder.append(p.val) 31 p=p.left 32 else: 33 p=stack.pop() 34 p=p.right 35 return preorder 36 37 if __name__=='__main__': 38 s=Solution() 39 preorder=[] 40 node5=TreeNode(5,None,None) 41 node4=TreeNode(4,None,None) 42 node3=TreeNode(3,node5,None) 43 node2=TreeNode(2,None,node4) 44 root=TreeNode(1,node2,node3) 45 preorder=s.preorderTraversal(root) 46 print preorder
-------------------------------------------------
原创博客 转载请注明出处http://www.cnblogs.com/hslzju
-------------------------------------------------