树
一、二叉树
1.定义
struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };
2.创建
以前序序列作为输入
#构造函数,返回根节点 TreeNode* create(int size, int& index, int* series){ TreeNode* root = nullptr; if(index<size && series[index]!=-1){ root = new TreeNode(series[index]); root->left = create(size, ++index, series); root->right = create(size, ++index, series); } return root; } #输入数据:前序序列,序列长度,遍历索引 index = 0; size = 7; series = new int[size]{2,3,-1,-1,4,-1,-1}; TreeNode* root = solution.create(size,index,series);
2.遍历
a)前序遍历 根节点-左子树-右子树
b)中序遍历 左子树-根节点-右子树
c)后序遍历 左子树-右子树-根节点
以前序方式遍历树
void traverse(TreeNode *root){ if(root != nullptr){ cout << root->val <<','; traverse(root->left); traverse(root->right); } }