zoukankan      html  css  js  c++  java
  • 【手撕代码2】-二叉树中序遍历(递归/非递归)

    1.递归

    2.非递归的核心在于使用栈的先进后出

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<stack>
     4 using namespace std;
     5 
     6 struct treenode
     7 {
     8     int val;
     9     treenode* left;
    10     treenode* right;
    11 };
    12 
    13 //递归
    14 void inorder(treenode *root)
    15 {
    16     if (root!=NULL)return;
    17     inorder(root->left);
    18     cout << root->val<<" ";
    19     inorder(root->right);
    20 
    21 }
    22 //非递归
    23 void inorder2(treenode* root)
    24 {
    25     stack<treenode*> a;
    26     a.push(root);
    27     treenode* t=root->left;
    28     while (t != NULL||!a.empty()) {
    29         while (t != NULL)
    30         {
    31             a.push(t);
    32             t = t->left;
    33         }
    34         if(!a.empty())
    35         {
    36             t = a.top();
    37             cout << t->val<<" ";
    38             a.pop();
    39             if (t->right != NULL)a.push(t->right);
    40         }
    41     }
    42 
    43 }
    44 int main()
    45 {
    46     treenode* root;
    47     inorder(root);
    48     inorder2(root);
    49     
    50     return 0;
    51 }

    详见 https://blog.csdn.net/czy47/article/details/81254984

  • 相关阅读:
    DeepLearning之路(三)MLP
    DeepLearning之路(二)SoftMax回归
    DeepLearning之路(一)逻辑回归
    自然语言处理工具
    一个 11 行 Python 代码实现的神经网络
    对联广告
    Java多线程
    QT数据库操作
    QT笔记
    C++基础入门
  • 原文地址:https://www.cnblogs.com/Annetree/p/13600577.html
Copyright © 2011-2022 走看看