二叉樹先序 中序 後序 層序遍歷的遞迴和非遞迴實現

2021-09-25 02:29:27 字數 959 閱讀 3957

先序、中序、後序三種遞迴遍歷:

//先序遍歷

void preorder(treenode* head)

//中序遍歷

void inorder(treenode* head)

//後序遍歷

void postorder(treenode* head)

層序遍歷列印二叉樹的遞迴法:

#include#includeusing namespace std;

struct treenode

};int depth(treenode* root)

void printklevel(treenode* root,int k)

printklevel(root->left,k-1);

printklevel(root->right,k-1);

}void printnode(treenode* root)

非遞迴遍歷:

//非遞迴的先序遍歷

void preorder(treenode* root)

if(!s.empty())

}}//非遞迴的中序遍歷

void inorder(treenode* root)

if(!s.empty())

}}//非遞迴的後序遍歷

void postorder(treenode* root)

if(!s.empty())

else

} }}

//非遞迴的層序遍歷

void levelorder(treenode* root)

}

深度優先遍歷~先序遍歷 非遞迴

void dfs(treenode *root)

}

廣度優先遍歷~層序遍歷

二叉樹先序 中序 後序遍歷

題目 用遞迴和非遞迴方式,分別按照二叉樹先序 中序和後序列印所有的節點。我們約定 先序遍歷順序為根 左 右 中序遍歷順序為左 根 右 後序遍歷順序為左 右 根。遞迴實現 遞迴遍歷二叉樹 先序 public void preorderrecur node head system.out.println...

求二叉樹的先序遍歷(中序 後序 先序)

problem description 已知一棵二叉樹的中序遍歷和後序遍歷,求二叉樹的先序遍歷 input 輸入資料有多組,第一行是乙個整數t t 1000 代表有t組測試資料。每組包括兩個長度小於50 的字串,第乙個字串表示二叉樹的中序遍歷序列,第二個字串表示二叉樹的後序遍歷序列。output 輸...

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

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