题目:
binary tree is a tree data structure in which each node has at most two children, which are referred to as the left child and the right child.
1、Three Constructor:
creat a tree by copy.
creat a tree by a array.(using BFS)
creat a tree by preorder and inorder.
2、Methods:
clear: clear the tree.
copyTree: input old tree root and new tree root, copy it and get a new tree.
3、Static Methods:
three way to search tree.
Hint:
‘#’是表示该节点不存在,在下层判断的时候,可忽略该不存在的节点,主要在根据数组构造树中。
如
1 2 3 # 4 5 6 7 # # 8
得到的是
1
/ \
2 3
\ / \
4 5 6
/ \
7 8
即把二叉树作为一个方法封装起来。
附上头文件:
//
// BinaryTree.hpp
// C++
//
// Created by my TA on 16/5/4.
// Copyright © 2016年 lee. All rights reserved.
//
#ifndef BinaryTree_hpp
#define BinaryTree_hpp
#include <iostream>
#include <vector>
#include <queue>
#include <stack>
#define EMPTY_ELE '#'
class BinaryTree {
public:
struct Node {
char val;
Node* left;
Node* right;
Node(char v, Node* l = NULL, Node* r = NULL):
val(v), left(l), right(r) {
}
};
BinaryTree(const BinaryTree&);
BinaryTree(std::vector<char>&);
// created by preorder and inorder
BinaryTree(const std::vector<char>& preOrder,
const std::vector<