二叉树的常见问题(遍历)

1、二叉树节点定义

struct TreeNode {
     int val;
     TreeNode *left;
     TreeNode *right;
     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 };
 

2、遍历二叉树

三种方式,最直观的方式是递归实现,下面是前序遍历的代码,中序和后序只需要改变一下语句顺序就可以。

class Solution {
public:
    vector<int> preorderTraversal(TreeNode* root) {
        vector<int> result;
        if(root==NULL)
            return result;   
        preorderTraversal(root,result);
        return result;
    }
    void preorderTraversal(TreeNode* root, vector<int> &result)
    {
        if(root==NULL)
            return;
        result.push_back(root->val);
        preorderTraversal(root->left,result);
        preorderTraversal(root->right,result);
    }
};

非递归的方式

猜你喜欢

转载自blog.csdn.net/u012991043/article/details/81147672