二叉樹的建立與遍歷

2021-05-11 05:56:09 字數 2014 閱讀 3554

#include

using namespace std;

template

class btnode

public:

btnode( t x)

/* btnode(const t& x,btnode* l, btnode* r)

*/ t element;

btnode*lchild,*rchild;

}; template

class binarytree

binarytree(t x);

// ~binarytree();

// bool isempty()const;

// bool root(t& x)const;

// void maketree(const t& x);

//   void maketree(btnode* t);

void maketree();

// void preorder(void (*vist)(t& x));

void preorder();

void inorder();

void postorder();

void out();

protected:

btnode*root;

private:

void maketree(btnode* t);

//  void maketree(const t& x,binarytree& left,binarytree& right);

void preorder(void (*visit)(t& x),btnode* t);

void inorder(void (*visit)(t& x),btnode* t);

void postorder(void (*visit)(t& x),btnode* t);

}; /*template

void binarytree::binarytree(t x)

*/ template

void visit(t& x)

*/ template

void binarytree::maketree()

//template

/*void binarytree::maketree(const t& x,binarytree& left,binarytree& right)

*/ template

void binarytree::maketree(btnode* t)

maketree(t->lchild);

coutj;

if(j==2)

maketree(t->rchild);

} // coutvoid binarytree::out()

template

void binarytree::inorder()

template

void binarytree::postorder()

template

void binarytree::inorder(void (*visit)(t& x),btnode* t) }

template

void binarytree::preorder(void (*visit)(t& x),btnode* t) }

template

void binarytree::postorder(void (*visit)(t& x),btnode* t) }

void main()

//a.out();

cout<<"按1先序遍歷並列印,按2中序遍歷並列印,按3後序遍歷並列印"<>j;

if(j==1)

else

if(j==2)

else

if(j==3) }

attention:

1,這裡的btnode是類而不是結構體;

2,這裡建立二叉樹採用的是類似於先序遍歷的形式;

二叉樹的建立與遍歷 二叉樹遍歷模板)

初學二叉樹,感覺之前鍊錶掌握不熟練導致接受有點難,現在做一些總結。本題其實就是根據給出的前序遍歷 包括空子樹 寫出相應的前序 中序和後序遍歷。廢話不多說,先看看題目 description 下面給出了教材中演算法6.4所示的演算法。status createbitree bitree t retur...

二叉樹建立與遍歷

二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱為 左子樹 和 右子樹 二叉樹的每個節點最多只能右兩棵子樹,子樹有左右之分,次序不能顛倒。除了葉結點外每乙個結點都有左右子葉且葉子結點都處在最底層的二叉樹。假設二叉樹的高度為k,除第k層外,其他各層的節點數都達到最大個數。也就是第一層到第k 1層為...

二叉樹建立與遍歷

節點定義 class binnode binnode char data2 data data2 binnode char data2,binnode parent2 data data2 void insertasleft char data void insertasright char dat...