二叉树相关(未完

1.二叉树遍历

1.1 前序遍历

根、左、右

A B D H E I C F J K G

代码模版

递归

/**
 * 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>v;
    vector<int> preorderTraversal(TreeNode* root) {
        if(root!=NULL){
           v.push_back(root->val);      //将根节点放入容器中
           preorderTraversal(root->left);   //处理左子树
           preorderTraversal(root->right);   //处理右子树
        }
        return v;
    }
};

非递归

class Solution {
public:
    vector<int> preorderTraversal(TreeNode* root) {
        vector<int>v;
        stack<TreeNode*>s;
        TreeNode* cur=root;
        while(cur!=NULL || !s.empty()){
            while(cur!=NULL){
                v.push_back(cur->val);
                s.push(cur);
                cur=cur->left;
            }
            TreeNode* top=s.top();
            s.pop();
            cur=top->right;
        }
        return  v;
    }
};

1.2 中序遍历

左、根、右

D H B E I A J F K C G

1.3 后序遍历

左、右、根

H D I E B J K F G C A

posted @ 2021-01-27 23:18  _一只土拨鼠  阅读(77)  评论(0)    收藏  举报