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

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

    For example:
    Given binary tree {1,#,2,3},

       1
        
         2
        /
       3
    

    return [1,3,2].

    Note: Recursive solution is trivial, could you do it iteratively?

    confused what "{1,#,2,3}" means? 

    递归解决方案

    class Solution {
    public:
        vector<int> res;
        
        void inorder(TreeNode* root){
            if(root == NULL) return;
            inorder(root->left);
            res.push_back(root->val);
            inorder(root->right);
        }
        
        vector<int> inorderTraversal(TreeNode *root) {
            inorder(root);
            return res;
        }
    };
    递归中序遍历

     非递归解决方案

    class Solution {
    public:
        vector<int> inorderTraversal(TreeNode *root) {
            vector<int> res;
            if(root == NULL) return res;
            stack<TreeNode *> nodeStack;
            TreeNode *current = root;
            while(!nodeStack.empty() || current ){
                if(current != NULL){
                    nodeStack.push(current);
                    current = current->left;
                }else{
                    current = nodeStack.top();nodeStack.pop();
                    res.push_back(current->val);
                    current = current->right;
                }
            }
            return res;
        }
    };
    非递归中序遍历
  • 相关阅读:
    刚体动力学
    碰撞检测系统
    动画系统II
    动画系统
    Game Develop Books
    光照技术
    LR参数组取值操作方法
    loadrunner测试ajax框架
    ​Web(click and script) 与 Web(HTTP/HTML)协议区别
    性能测试常用的linux命令
  • 原文地址:https://www.cnblogs.com/xiongqiangcs/p/3818925.html
Copyright © 2011-2022 走看看