二叉树的常见问题(遍历),平衡二叉树,二叉搜索树,B树的定义

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,又:二叉查找树,二叉排序树。它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树

    原文作者:平衡二叉树
    原文地址: https://blog.csdn.net/u012991043/article/details/81147672
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞