二叉树笔记

二叉树的天然递归结构

二叉树递归查找元素
二叉树递归释放空间
复习二叉树相关的所有操作

104. Maximum Depth of Binary Tree

struct TreeNode {
    int            val;
    TreeNode*    left;
    TreeNode*    right;
    TreeNode(int x): val(x), left(NULL),right(NULL) {}
};

//采用DFS的思想
int maxDepth(TreeNode *root)
{
    if (NULL == root)
        return 0;
    int l = maxDepth(root->left);
    int r = maxDepth(root->right);

    return l > r ? l + 1:r+1;
    //以上这两种方式有一种更简便的方法
    //return 1 + max(maxDepth(root->left), maxDepth(root->right));
}

//采用BFS的方法,引入队列
int maxDepth(TreeNode *root)
{
    if (NULL == root)
        return 0;
    queue <TreeNode *> que;
    int nCount = 1;
    int nDepth = 0;// 记录队列里面每一层上的元素

    que.push(root);
    while(!que.empty()) {
        TreeNode *pTemp = que.front();
        que.pop();
        nCount --;

        if (pTemp->left)
            que.push(pTemp->left);
        if (pTemp->right)
            que.push(pTemp->right);

        if (nCount == 0) {
            nDepth ++;
            nCount = que.size();
        }
    }
    return nDepth;
}

111. Minimum Depth of Binary Tree

struct TreeNode {
    int            val;
    TreeNode    *left;
    TreeNode    *right;
    TreeNode(int x): val(x),left(NULL), right(NULL) {}
};

int minDepth(TreeNode *root) 
{
    if (NULL == root)
        return 0;
    int l = minDepth(root->left);
    int r = minDepth(root->right);
    if (!l)
        return r+1;
    if (!r)
        return l+1;
    return (l<r)?l+1:r+1;
}

226. Invert Binary Tree


100. Same Tree


101. Symmetric Tree


222. Count Complete Tree Nodes


110. Balanced Binary Tree


注意递归的终止条件

112. Path Sum


404. Sum of Left Leaves


257. Binary Tree Paths


113. Path Sum II


129. Sum Root to Leaf Numbers


更复杂的递归逻辑

437. Path Sum III

二分搜索树中的问题
复习二分搜索树的基本操作:插入、查找、删除、最大值、最小值、前驱、后继、上界、下界、rank、第K大、第K小元素

红黑树了解一下

235. Lowest Common Ancestor of a Binary Search Tree


98. Validate Binary Search Tree


450. Delete Node in a BST


108. Convert Sorted Array to Binary Search Tree


230. Kth Smallest Element in a BST


236. Lowest Common Ancestor of a Binary Tree

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值