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;
        }
        
    };


  • 相关阅读:
    应用层协议及ip地址划分
    请求与响应编码及jsp基本原理
    springboot注解
    springboot 快速入门
    Http协议简单解析及web请求过程
    Tomcat原理详解及请求过程
    mysql数据库乱码的问题解决
    AOP的实现原理
    Springl利用Aspectj的扩展实现Aop
    JDK动态代理实现原理
  • 原文地址:https://www.cnblogs.com/jsrgfjz/p/8519922.html
Copyright © 2011-2022 走看看