具体可参考:https://www.cnblogs.com/Allen-rg/p/7110954.html
给出一棵二叉树,返回其节点值的后序遍历。
样例
给出一棵二叉树 {1,#,2,3}
,
1
\
2
/
3
返回 [3,2,1]
思路:二叉树的后序遍历,简单题目,递归方法,要很快撸出来,非递归方法也要熟悉;
后序遍历:左->右->根
注意,注意,注意! 递归的时候一定要注意定义的变量是否会在每次递归时重新定义;
/**
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int val) {
* this->val = val;
* this->left = this->right = NULL;
* }
* }
*/
class Solution {
/**
* @param root: The root of binary tree.
* @return: Postorder in vector which contains node values.
*/
/*
二叉树的后序遍历,简单题目,递归方法,要很快撸出来,非递归方法也要熟悉;
后序遍历:左->右->根
注意,注意,注意! 递归的时候一定要注意定义的变量是否会在每次递归时重新定义;
*/
public:
vector<int> vec;
vector<int> postorderTraversal(TreeNode *root) {
// write your code here
if(root==NULL){
return vec;
}
if(root->left!=NULL){
postorderTraversal(root->left);
}
if(root->right!=NULL){
postorderTraversal(root->right);
}
vec.push_back(root->val);
return vec;
}
};
给出一棵二叉树,返回其中序遍历
样例
给出二叉树 {1,#,2,3}
,
1
\
2
/
3
返回 [1,3,2]
.
思路: 中序遍历:左->根->右
非递归方法,也要熟悉;
/**
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int val) {
* this->val = val;
* this->left = this->right = NULL;
* }
* }
*/
class Solution {
/**
* @param root: The root of binary tree.
* @return: Inorder in vector which contains node values.
*/
/*
用递归的方法,二叉树中序遍历,简单题目;
中序遍历:左->根->右
非递归方法,也要熟悉;
*/
public:
vector<int> vec;
vector<int> inorderTraversal(TreeNode *root) {
// write your code here
if(root==NULL){
return vec;
}
if(root->left!=NULL){
inorderTraversal(root->left);
}
vec.push_back(root->val);
if(root->right!=NULL){
inorderTraversal(root->right);
}
return vec;
}
};
给出一棵二叉树,返回其节点值的前序遍历。
您在真实的面试中是否遇到过这个题?
Yes
样例
给出一棵二叉树 {1,#,2,3}
,
1
\
2
/
3
返回 [1,2,3]
.
思路:简单题,递归方法要在五分钟内快速正确的撸出来;
先序遍历:根->左->右
/**
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int val) {
* this->val = val;
* this->left = this->right = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param root: The root of binary tree.
* @return: Preorder in vector which contains node values.
*/
/*
简单题,递归方法要在五分钟内快速正确的撸出来;
先序遍历:根->左->右
*/
vector<int> vec;
vector<int> preorderTraversal(TreeNode *root) {
// write your code here
if(root==NULL){
return vec;
}
vec.push_back(root->val);
if(root->left!=NULL){
preorderTraversal(root->left);
}
if(root->right!=NULL){
preorderTraversal(root->right);
}
return vec;
}
};