2叉樹的先序遍歷演算法實現

2021-06-06 23:46:45 字數 1060 閱讀 5741

// 先序2叉樹的遞迴演算法.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include

#include

#include

using namespace std;

#define maxsize 100

//2叉樹資料定義

typedef struct bitnode

tree,*treenode;

//先序遍歷遞迴演算法

void preorder(treenode root)

}//中序遍歷遞迴演算法

void inorder(treenode root)

//後序遍歷遞迴演算法

void postorder(treenode root)

}//建立乙個2叉樹

void createtree(treenode root,int nodenum) /*先序遍歷演算法建立*/

else

cout<<"create right child for node"<>i;

if ( i == 0)

else

return ;

}//先序遍歷非遞迴演算法

void preorderunrec(treenode bt)

st[maxsize];

int top = -1;

top++;

st[top].pt = bt;

st[top].tag = 1;

while (top > -1)  /*棧不空時迴圈*/

}if(st[top].tag == 0)}}

//中序遍歷非遞迴演算法

void inorderunrec(treenode bt)

if(top > -1)

}cout}p = null; 

flag = 1;

while (top != -1&&flag)

else

}}while (top != -1);

cout

樹的先序遍歷

先序遍歷順序 根 左 右 對於任一結點p 1.訪問結點p,並將結點p入棧 2.判斷結點p的左孩子是否為空,若為空,則取棧頂結點並進行出棧操作,並將棧頂結點的右孩子置為當前的結點p,迴圈至1 若不為空,則將p的左孩子置為當前的結點p 3.直到p為null並且棧為空,則遍歷結束 所以 1 先將根節點入棧...

二叉樹先序遍歷 中序遍歷 後序遍歷

輸入二叉樹的先序遍歷序列和中序遍歷序列,輸出該二叉樹的後序遍歷序列。非建二叉樹版本 include includeusing namespace std string preord,inord void rebuild int preleft,int preright,int inleft,int ...

二叉樹 先序遍歷 中序遍歷 後續遍歷

package com.example.ljia.structure.tree import lombok.data author samlai description 遞迴 二叉樹 先序遍歷 中序遍歷 後續遍歷 先序遍歷 根 左 右 中序遍歷 左 根 右 後序遍歷 左 右 根 發現規律 這裡的順序...