随笔分类 - 数据结构---树
摘要:题意:寻找二叉查找树中出现次数最多的值 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : v
阅读全文
摘要:题意:在二叉查找树中查找两个节点之差的最小绝对值 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x
阅读全文
摘要:题意:在BST中寻找两个节点,使它们的和为一个给定值。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(in
阅读全文
摘要:题意:根据有序链表构造平衡的二叉查找树。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL)
阅读全文
摘要:题意:从有序数组中构造平衡的BST。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : va
阅读全文
摘要:题意:二叉树求两点LCA。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x),
阅读全文
摘要:题意:求BST中两点的最近公共祖先。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : va
阅读全文
摘要:题意:把二叉查找树每个节点的值都加上比它大的节点的值。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(in
阅读全文
摘要:题意:寻找二叉查找树的第 k 个元素。 法一:中序遍历 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(in
阅读全文
摘要:题意:非递归实现二叉树的中序遍历。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val
阅读全文
摘要:题意:非递归实现二叉树的后序遍历。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val
阅读全文
摘要:题意:非递归实现二叉树的前序遍历。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val
阅读全文
摘要:题意:找到树中左下角的节点。 分析:层次遍历,每层从右往左遍历,最后一个结点即为左下角结点。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *r
阅读全文
摘要:题意:求二叉树每层节点的平均值。 分析:bfs层次遍历,每步循环一次性处理一整层。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right;
阅读全文
摘要:题意:找出二叉树中第二小的节点。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(
阅读全文
摘要:题意:每个节点都有一个值,不同时遍历父子节点的情况下,求整棵树遍历后的和的最大值。 分析:每个节点都是选或不选,取最优 (1)选:左右子节点不能选,孙子节点可以选也可以不选 (2)不选:左右子节点可以选也可以不选 /** * Definition for a binary tree node. *
阅读全文
摘要:题意:统计相同节点值的最大路径长度,两点间的最大路径代表两点间边的个数。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * Tr
阅读全文
摘要:题意:求树的最小深度。 分析:要考虑无左/右子节点的情况。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(
阅读全文
摘要:题意:判断非空二叉树t是否为非空二叉树s的子树。 分析:对于树s的root结点来说,子树t:(1)与以root为根的树相等(2)在root->left子树中(3)在root->left子树中 /** * Definition for a binary tree node. * struct Tree
阅读全文
摘要:题意:统计路径和等于sum的路径数量。 (1)节点值可正可负 (2)路径两端不一定是根结点或叶子结点 (3)路径一定是向下 分析:路径起点 (1)位于root(统计以root开头的和等于sum的路径数量) (2)位于root->left子树(递归) (3)位于root->right子树(递归) /*
阅读全文