二叉树的(前序|中序|后序)遍历

数据结构 · 03-04 · 65 人浏览
二叉树的(前序|中序|后序)遍历

Definition

树的结构如下:

 /**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */

前序遍历 preorder

void printTree(TreeNode* root)
{
    if(root == nullptr) return;
    ans.push_back(root->val); 
    printTree(root->left);        
    printTree(root->right);
}

中序遍历 inorder

void printTree(TreeNode* root)
{
    if(root == nullptr) return;
    printTree(root->left);        
    ans.push_back(root->val); 
    printTree(root->right);  
}

后序遍历 postorder

void printTree(TreeNode* root)
{
    if(root == nullptr) return;
    printTree(root->left);        
    printTree(root->right);
    ans.push_back(root->val); 
        
}

Note:

一定要先判断当前节点是否为NULL,不然就会访问错误的内存,导致segmentation fault

数据结构
Theme Jasmine by Kent Liao