2017算法课.13(Binary Tree Preoder Traversal)
来源:互联网 发布:什么是淘宝到家 编辑:程序博客网 时间:2024/06/03 21:58
题目:
Given a binary tree, return the preorder traversal of its nodes' values.
For example:
Given binary tree {1,#,2,3},
1
\
2
/
3
return [1,2,3].
解析:众所周知,二叉树的遍历常规分为三种,前序遍历,中序遍历,后序遍历。这个题目是前序遍历。对于二叉树的遍历,一般采用的是递归算法,理解起来容易,但是对于遍历的效率来说,遍历效率要低很多。一般来说,可以采用递归算法的往往也可以迭代来解决,迭代的话可以利用栈来描述。下面是递归思想的算法:
vector<int> preorderTraversal(TreeNode* root) {
vector<int> v;
preTraversal(root, v);
return v;
}
void preTraversal(TreeNode* root, vector<int>& v){
if(!root) return;//根为空,返回
v.push_back(root->val);//把根的值放到向量v中
preTraversal(root->left, v);//递归遍历根的左子节点
preTraversal(root->right, v);//递归遍历根的右子节点
}
迭代法:
vector<int> preorderTraversal(TreeNode* root) {
vector<int> v;
if(!root) return v;
TreeNode* temp = root;
stack<TreeNode*> s;
s.push(root);
while(!s.empty()){//循环,直至栈为空
temp = s.top();
s.pop();//取完栈顶元素后删除顶部
v.push_back(temp->val);
if(temp->right) s.push(temp->right);
if(temp->left) s.push(temp->left);
}
}
- 2017算法课.13(Binary Tree Preoder Traversal)
- 2017算法课.17(Binary Tree Inorder Traversal)
- Binary Tree Traversal (一)
- 算法:Binary Tree Level Order Traversal
- 算法训练:Binary Tree Level Order Traversal
- LeetCode算法题目:Binary Tree Preorder Traversal
- 94. Binary Tree Inorder Traversal(Tree)
- 145. Binary Tree Postorder Traversal(Tree)
- (leetcode )Binary Tree Postorder Traversal
- (leetcode)Binary Tree Preorder Traversal
- Binary Tree Preorder Traversal (leetcode 144)
- Binary Tree Level Order Traversal (easy)
- 144. Binary Tree Preorder Traversal(Stack)
- Binary Tree Inorder Traversal
- Binary Tree Inorder Traversal
- Binary Tree Inorder Traversal
- Binary Tree Inorder Traversal
- Binary Tree Inorder Traversal
- 808D Array Division
- django 注册的模型没有显示
- 记录下心情
- HDU 1113 Word Amalgamation
- nodejs解析xml字符串为对象
- 2017算法课.13(Binary Tree Preoder Traversal)
- 关于 Quartus II 13.1中调用ModelSim-Altera 10.1d 报错问题
- Springmvc导出excel表
- 推送本地项目至git仓库
- IOI 1994 USACO 1.5 数字三角形 Number Triangles
- 数据结构之查找
- Hive学习指南(二)
- Hive安装配置+练习
- 微信小程序开发 一 tabbar图标和颜色