zoukankan      html  css  js  c++  java
  • Binary Tree Inorder Traversal

    题目:Given a binary tree, return the inorder traversal of its nodes' values.

    Given binary tree {1,#,2,3},

    return [1,3,2].


    思路:左节点-->根节点-->右节点

    如果节点不为空或者堆栈不为空,入栈。不行了,就出栈。

    怕就怕,root已经为空,但是堆栈不为空,所以在while循环设立判断条件。


    代码:

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
     
     //https://leetcode.com/problems/binary-tree-inorder-traversal/
    class Solution1 {
    public:
        vector<int> inorderTraversal1(TreeNode* root){
            vector<int> result;
            inorderHelper(root,result);
            return result;
        }
        
        void inorderHelper(TreeNode *root,vector<int> &result){
            if(root==NULL) return;
            inorderHelper(root->left,result);
            result.push_back(root->val);
            inorderHelper(root->right,result);
        }
    };
    
    
    class Solution2 {
    public:
        vector<int> inorderTraversal2(TreeNode* root){
            stack<TreeNode *>st;
            vector<int> result;
            
            while(!(root==NULL&&st.empty())){
                if(root!=NULL){
                    st.push(root);
                    root=root->left;
                }
                else{
                    root=st.top();st.pop();
                    result.push_back(root->val);
                    root=root->right;
                }
                //这个时候while循环是不对的,如果只有左子树,就不能出结果。因为有堆栈,可以判断是否为空。
            }
            return result;
        }
        
    };


  • 相关阅读:
    python的装饰器
    闭包的概念
    py3.x和py2.x的区别
    python在WIN下CMD运行中文乱码及python 2.x python 3.x编码问题
    python 中文乱码问
    字符编码
    第03章 科学计算库Numpy
    《数据结构与算法》-哈希查找算法
    python寻找小于给定值的最大质数
    《数据结构与算法》-6-七大查找算法-1
  • 原文地址:https://www.cnblogs.com/jsrgfjz/p/8519922.html
Copyright © 2011-2022 走看看