1、二叉树节点定义
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
2、遍历二叉树
三种方式,最直观的方式是递归实现,下面是前序遍历的代码,中序和后序只需要改变一下语句顺序就可以。
class Solution {
public:
vector<int> preorderTraversal(TreeNode* root) {
vector<int> result;
if(root==NULL)
return result;
preorderTraversal(root,result);
return result;
}
void preorderTraversal(TreeNode* root, vector<int> &result)
{
if(root==NULL)
return;
result.push_back(root->val);
preorderTraversal(root->left,result);
preorderTraversal(root->right,result);
}
};
非递归的方式
定义
平衡二叉树:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
B树:多叉平衡搜索树
二叉搜索树:Binary Search Tree,又:二叉查找树,二叉排序树。它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。