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

  • 相关阅读:
    clip属性,截取你想要显示的图片
    select背景灰色
    [转]ShowModal() = mrOk
    【转】Delphi-Unit文件结构
    析构方法
    [转]Delphi 7连接MySql /MariaDB
    MySQL/Mariadb遇见的问题
    更换数据库
    FlameRobin
    FireBird初使用
  • 原文地址:https://www.cnblogs.com/Annetree/p/13600577.html
Copyright © 2011-2022 走看看