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

    原题链接:https://oj.leetcode.com/problems/binary-tree-inorder-traversal/

    题目大意:中序遍历二叉树

    解题思路:中序遍历二叉树。中序遍历二叉树的左子树,訪问根结点,中序遍历二叉树的右子树。非递归实现时,用一个栈模拟遍历过程就可以。由于须要先遍历左子树。所以每一个结点先入栈。出栈时訪问。

    vector<int> inorderTraversal(TreeNode *root) {
            vector<int> ret;
            if(!root)
                return ret;
            stack<TreeNode*> s;
            while(root||!s.empty())
            {
                if(!root)
                {
    				root=s.top();
    				ret.push_back(root->val);
    				s.pop();
    				root=root->right;
                }
    			else
    			{
    				s.push(root);
    				root=root->left;
    			}
            }

    复杂度分析:时间复杂度为O(N),由于每一个结点仅遍历一次。

    空间复杂度为O(lgN)。为栈的最大长度。即树深。

    中序遍历和先许遍历一样须要熟练掌握,bug-free哦。

  • 相关阅读:
    socketserver
    socket进阶
    socket基础
    反射
    subprocess模块
    面向对象高级特性
    面向对象基础
    字典的高级特性
    *号的妙用
    logging模块
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/7055656.html
Copyright © 2011-2022 走看看