先序、中序、後序三種遞迴遍歷:
//先序遍歷
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 ...