二叉樹 非遞迴實現

2022-03-22 08:56:38 字數 768 閱讀 4572

#include#include

#include

#include

#define elemtype char

using

namespace

std;

typedef

struct

bitnodebitnode,*bitree;

int createbitree(bitree *t)

return1;

}void

preorderdisplay(bitree t)

s.push(t);

while(!s.empty())

}void

inorderdisplay(bitree t)

stack

s; bitree curr =t;

while(curr!=null||!s.empty())

//然後邊出棧邊輸出邊入右節點

if(!s.empty())

}

}void

postorderdisplay(bitree t)

curr =s.top();

if(curr->rchild == null||curr->rchild ==pre) // 判斷當前節點是否有右孩子或者當前節點的右孩子是否等於上次訪問節點

else // 有右孩子,需要入棧

curr = curr->rchild;

}}int

main()

二叉樹 遞迴 非遞迴

include include include include using namespace std typedef struct node bintree typedef struct node1 btnode void creatbintree char s,bintree root 建立二叉...

二叉樹遍歷 遞迴 非遞迴實現

先序遍歷中序遍歷 後序遍歷 根結點 左子樹 右子樹 左子樹 根子樹 右子樹 左子樹 右子樹 根結點 先序遍歷 void preorder btree t 中序遍歷 void inorder btree t 後序遍歷 void postorder btree t 遞迴 recursion 就是子程式 ...

非遞迴二叉樹

由於棧和遞迴原理相同,且遞迴建立二叉樹的效率較低,所以我們可以借助棧來實現二叉樹的非遞迴建立以及遍歷。include include using namespace std template struct binarytreenode template class binarytree binary...