• 94.Binary Tree Inorder Traversal


    思路:
    • 递归。
    
    /**
     * 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> inorderTraversal(TreeNode* root) {
            vector<int> res;
            dfs(res,root);
            return res;
        }
        void dfs(vector<int>& res,TreeNode* root){
            if(root){
                dfs(res,root->left);
                res.push_back(root->val);
                dfs(res,root->right);
            }
        }
    };
    
    • 利用栈进行遍历。对于中序遍历,首先遍历左子树, 然后是根节点,最后才是右子树,所以我们需要用stack记录每次遍历的根节点, 当左子树遍历完成之后,从stack弹出根节点,得到其右子树,开始新的遍历。(参考的一个文档,链接找不到了。。)
    /**
     * 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> inorderTraversal(TreeNode* root) {
            vector<int> res;
            stack<TreeNode*> tmp;
            TreeNode* p = root;
            while(p || !tmp.empty()){
                while(p){
                    tmp.push(p);
                    p = p->left;
                }
                if(!tmp.empty()){
                    p = tmp.top();
                    tmp.pop();
                    res.push_back(p->val);
                    p = p->right;
                }
            }
            return res;
        }
    };
    
    • 直接遍历,以后写。。
  • 相关阅读:
    docker映射端口无法访问
    Tomcat日志分析
    linux服务器性能测试
    mysql库表结构对比工具
    网络基础知识,不懂看这里
    Python之redis、mysql进程守护
    linux文件查找工具
    nginx解决跨域问题
    redis插入单个较大的键值
    linux系统安全巡检脚本
  • 原文地址:https://www.cnblogs.com/UniMilky/p/7017796.html
Copyright © 2020-2023  润新知