复习笔记一篇。
- 利用广义表生成二叉森林
- 树与森林二叉遍历(树的先根、后根遍历;森林的先根、后根遍历)
- 树的广度遍历
- 树遍历的应用:求结点个数,求树的深度。
//
// main.cpp
// 二叉森林
//
// Created by scnulpc on 2018/10/21.
// Copyright © 2018年 scnulpc. All rights reserved.
//
#include <iostream>
#include <queue>
#define size 100
using namespace std;
struct treeNode
{
char value;
treeNode* firstChild;
treeNode* nextBrother;
treeNode(char a):value(a),firstChild(NULL),nextBrother(NULL){}
};
//通过广义表将棵原始森林转为二叉树森林(长子-兄弟链)
treeNode* createTreeByList(char * &s,char end)
{
if (*s==end) return NULL;
if (*s==')'){s++;return NULL;}
if (*s=='(') s++;
treeNode* root = new treeNode(*s);
s++;
root->firstChild = createTreeByList(s,end);
root->nextBrother = createTreeByList(s,end);
return root;
}
//先根遍二叉树ÿ