LeetCode:Binary Tree Preorder Traversal(二叉树的先序遍历)
2015-08-12 11:12
537 查看
Given a binary tree, return the preorder traversal of its nodes' values.
For example:
Given binary tree
return
解法一:用栈实现(递归本质)
解法二:递归方式
解法三:morris遍历方式 有待更新。
For example:
Given binary tree
{1,#,2,3},
1 \ 2 / 3
return
[1,2,3].
解法一:用栈实现(递归本质)
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: vector<int> preorderTraversal(TreeNode* root) { vector<int> result; stack<TreeNode *> node_stack; if(root!=NULL) node_stack.push(root); TreeNode *node; while(!node_stack.empty()) { node=node_stack.top(); result.push_back(node->val); node_stack.pop(); if(node->right!=NULL) node_stack.push(node->right); if(node->left!=NULL) node_stack.push(node->left); } return result; } };
解法二:递归方式
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: vector<int> preorderTraversal(TreeNode* root) { vector<int> result; preorder(root,result); return result; } void preorder(TreeNode *node,vector<int> &result) { if(node!=NULL) { result.push_back(node->val); preorder(node->left,result); preorder(node->right,result); } } };
解法三:morris遍历方式 有待更新。
相关文章推荐
- N的阶乘(N!)中的末尾有多少个0?
- CocoaPods安装和使用教程
- DWZ富客户端框架 api
- 合并表记录
- 备份
- iOS开发 使用GCD实现多任务
- KMP算法的next、next value数组代码实现及POJ3461
- Java安全通信:HTTPS与SSL
- CoreData之条件查询 contains
- LeetCode题解:Contains Duplicate II
- SASS语法学习
- 域名解析
- iOS中的NSArraySort(^块语法)
- CoreData之条件查询 contains
- 莱特币LTC矿池p2pool架设之Linux篇(自动调节矿工难度)
- 变量的定义、声明、赋值和初始化的区别
- HTTP状态码
- leetCode #28 Implement strStr()
- 哥们别逗 了,写个脚本那真不叫运维自动化!
- Apache Maven 使用 profile 和 filtering 实现多种环境下的资源配置管理