二叉树定义与基础操作#
二叉树结点定义#
1
2
3
4
5
6
|
struct TreeNode {
int val;
TreeNode *left, *right;
TreeNode(int x): val(x), left(nullptr), right(nullptr) {}
TreeNode(int x, TreeNode *left, TreeNode *right): val(x), left(left), right(right) {}
};
|
建立二叉树#
1
2
3
4
5
6
7
8
9
10
11
|
// 先序建立二叉树,返回根节点,空节点用 0 表示
TreeNode* createBiTree(TreeNode *root) {
int val;
cin >> val;
if (val) {
root = new TreeNode(val);
root->left = createBiTree(root->left);
root->right = createBiTree(root->right);
}
return root;
}
|
例如输入:1 2 3 0 0 4 0 0 5 0 0,对应的二叉树为:
1
2
3
4
5
|
1
/ \
2 5
/ \
3 4
|
二叉树的遍历#
先序遍历#
中序遍历#
后序遍历#
通用版本#