
树
文章平均质量分 62
张荣华_csdn
这个作者很懒,什么都没留下…
展开
-
Sum Root to Leaf Numbers
Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number.An example is the root-to-leaf path 1->2->3 which represents the number 123.Find the total su...原创 2018-06-28 17:23:38 · 188 阅读 · 0 评论 -
计算二叉树的叶子结点个数
#include "string.h" #include "stdio.h" #include "malloc.h"typedef struct BiTNode{ char data; /*结点的数据域*/ struct BiTNode *lchild , *rchild; /*指向左孩子和右孩子*/} BiTNode , *BiTree;void CreatB...原创 2018-07-23 21:26:51 · 31088 阅读 · 3 评论 -
递归计算二叉树的叶子节点个数
#include "stdio.h"#include "malloc.h"typedef struct BiTNode{ char data; /*结点的数据域*/ struct BiTNode *lchild , *rchild; /*指向左孩子和右孩子*/} BiTNode , *BiTree;/*创建一棵二叉树*/void CreatBiTree(BiTr...原创 2018-07-24 00:07:35 · 12507 阅读 · 1 评论 -
编程计算二叉树中某结点的层数
题目:编写一个函数:实现在二叉树中查找与字符key内容相同的结点,并返回其在二叉树中的层数。如果二叉树中不存在该结点,则返回-1.#include "stdio.h"typedef struct BiTNode{ char data; /*结点的数据域*/ struct BiTNode *lchild , *rchild; /*指向左孩子和右孩子*/} BiTNod...原创 2018-07-24 00:07:29 · 8938 阅读 · 0 评论 -
二叉排序树的性质
1.若它的左子树不为空,则左子树上的所有节点的值均小于根节点的值;2.若它的右子树不为空,则右子树上的所有结点的值均大于根节点的值;3.二叉排序树的左右子树也都是二叉排序树。...原创 2018-07-24 00:07:21 · 2435 阅读 · 0 评论 -
最低公共祖先问题
#include "stdio.h"#include "malloc.h"#include "string.h"typedef struct BiTNode{ int data; /*结点的数据域*/ struct BiTNode *lchild; struct BiTNode *rchild; /*指向左孩子和右孩子*/} BiTNode , *BiTre...原创 2018-07-24 00:07:15 · 260 阅读 · 0 评论 -
二叉搜索树与双向链表
题目:输入一棵二叉搜索树,将该二叉搜素树转换成一个排序的双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。void ConvertNode(BinaryTreeNode* pNode, BinaryTreeNode** pLastNodeInList);BinaryTreeNode* Convert(BinaryTreeNode* pRootOfTree){ BinaryTre...原创 2018-07-15 00:55:38 · 125 阅读 · 0 评论 -
序列化二叉树
题目:请实现两个函数,分别用来序列化合反序列化二叉树。序列化void Serialize(const BinaryTreeNode* pRoot, ostream& stream){ if(pRoot == nullptr) { stream << "$,"; return; } stream << pRoot-&...原创 2018-07-15 00:55:32 · 187 阅读 · 0 评论 -
二叉搜索树的第K大结点
题目:给定一个二叉搜索树,请找出其中第K大的结点。如果按照中序遍历的顺序遍历一棵二叉搜索树,则遍历序列的数值是递增排序的。只需要用中序遍历算法遍历一棵二叉树搜索树,很容易找出第K大结点。const BinaryTreeNode* KthNode(const BinaryTreeNode* pRoot, unsigned int k){ if(pRoot == nullptr || ...原创 2018-07-21 00:10:43 · 470 阅读 · 0 评论 -
二叉树的深度
题目:输入一棵二叉树的根结点,求该树的深度。struct BinaryTreeNode{int m_nValue;BinaryTreeNode* m_pLeft;BinaryTreeNode* m_pRight;}如果一棵树只有一个节点,那么它的深度为1.如果根节点只有左子树而没有右子树,那么树的深度应该是其左子树的深度加1;同样,如果根节点只有右子树而没有左子树,那么树的...原创 2018-07-21 00:10:50 · 340 阅读 · 0 评论 -
递归计算二叉树深度
#include "stdio.h"#include "malloc.h"typedef struct BiTNode{ char data; /*结点的数据域*/ struct BiTNode *lchild , *rchild; /*指向左孩子和右孩子*/} BiTNode , *BiTree;/*创建一棵二叉树*/void CreatBiTree(BiTr...原创 2018-07-23 21:20:56 · 10705 阅读 · 1 评论 -
编程计算二叉树的深度
#include "stdio.h"#include "malloc.h"typedef struct BiTNode{ char data; /*结点的数据域*/ struct BiTNode *lchild , *rchild; /*指向左孩子和右孩子*/} BiTNode , *BiTree;/*创建一棵二叉树*/void CreatBiTree(BiTre...原创 2018-07-23 21:19:25 · 5638 阅读 · 0 评论 -
编程创建一棵二叉树
#include "stdio.h"#include<malloc.h>typedef struct BiTNode{ char data; /*结点的数据域*/ struct BiTNode *lchild , *rchild; /*指向左孩子和右孩子*/} BiTNode , *BiTree;/*创建一棵二叉树*/void CreatBiTree(...原创 2018-07-23 21:12:06 · 5332 阅读 · 1 评论 -
Binary Tree Right Side View
Given a binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can see ordered from top to bottom.Example:Input: [1,2,3,null,5,null,4]Output: [1, 3, 4]Exp...原创 2018-07-13 00:10:34 · 164 阅读 · 0 评论 -
Binary Tree Preorder Travers
Given a binary tree, return the preorder traversal of its nodes' values.Example:Input: [1,null,2,3] 1 \ 2 / 3Output: [1,2,3]Follow up: Recursive solution is trivial, could you do...原创 2018-06-29 09:56:26 · 211 阅读 · 0 评论 -
Binary Tree Postorder Traversal
Given a binary tree, return the postorder traversal of its nodes' values.Example:Input: [1,null,2,3] 1 \ 2 / 3Output: [3,2,1]Follow up: Recursive solution is trivial, could you d...原创 2018-06-29 09:56:38 · 243 阅读 · 0 评论 -
Trim a Binary Search Tree
Given a binary search tree and the lowest and highest boundaries as L and R, trim the tree so that all its elements lies in [L, R] (R >= L). You might need to change the root of the tree, so the re...原创 2018-06-29 09:57:08 · 200 阅读 · 0 评论 -
判断数组是否为某二叉搜索树的后序遍历
#include<iostream>#include<vector>using namespace std;bool VerifySquenceOfBST(int sequence[], int length){ if (sequence == nullptr || length <= 0) return false; int root = sequence[len...原创 2018-07-14 00:05:33 · 167 阅读 · 0 评论 -
二叉树中和为某一值的路径
题目:输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。void FindPath(BinaryTreeNode* pRoot, int expectedSum, vector<int>& path, int& currentSum){ currentSum += pRoot->m_nValue; path.p...原创 2018-07-14 00:06:00 · 199 阅读 · 0 评论 -
树结构的性质
性质1:非空树的结点总数等于树中所有节点的度之和加1。性质2:度为k的非空树的第i层最多有k^(i-1)个结点。性质3:深度为h的k叉树最多有(k^h-1)/(k-1)个结点。性质4:具有n个结点的k叉树的最小深度为[logk(n(k-1)+1]。 ...原创 2018-07-23 20:45:03 · 367 阅读 · 0 评论 -
二叉树的性质
性质1:在二叉树中第i层上之多有2^(i-1)个结点。性质2:深度为k的二叉树之多有2^k-1个结点。性质3:对于任意一棵二叉树,如果其叶子节点数为n0,度为2的结点数为n2,则n0=n2+1。性质4:具有n个结点的完全二叉树的深度为[log2n]+1。...原创 2018-07-23 20:55:38 · 538 阅读 · 0 评论 -
编程实现二叉树的遍历
#include "stdio.h"typedef struct BiTNode{ char data; /*结点的数据域*/ struct BiTNode *lchild , *rchild; /*指向左孩子和右孩子*/} BiTNode , *BiTree;/*创建一棵二叉树*/void CreatBiTree(BiTree *T){ char c;...原创 2018-07-23 21:04:42 · 1072 阅读 · 0 评论 -
平衡二叉树
题目:输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一颗平衡二叉树。方法一:在遍历树的每个节点额度时候,调用函数TreeDepth得到它的左右子树的深度。如果每个节点左右子树的深度相差都不超过1,那么按照定义它就是一棵平衡二叉树。int TreeDepth(const BinaryTreeNode* pRoot){ ...原创 2018-07-21 00:10:58 · 221 阅读 · 0 评论 -
树中两个节点的最低公共祖先
思路:先求出根结点到两个节点的路径,保存在链表或者list中,然后问题转换为求两条路径的最后一个公共结点。bool GetNodePath(const TreeNode* pRoot, const TreeNode* pNode, list<const TreeNode*>& path){ if(pRoot == pNode) return tru...原创 2018-07-30 00:01:12 · 244 阅读 · 0 评论 -
二叉树的序列化
首先我们介绍二叉树先序序列化的方式,假设序列化的结果字符串为str,初始时str等于空字符串。先序遍历二叉树,如果遇到空节点,就在str的末尾加上“#!”,“#”表示这个节点为空,节点值不存在,当然你也可以用其他的特殊字符,“!”表示一个值的结束。如果遇到不为空的节点,假设节点值为3,就在str的末尾加上“3!”。现在请你实现树的先序序列化。给定树的根结点root,请返回二叉树序列化后的字符串...原创 2018-08-20 22:26:54 · 209 阅读 · 0 评论 -
平衡二叉树判断
有一棵二叉树,请设计一个算法判断这棵二叉树是否为平衡二叉树。给定二叉树的根结点root,请返回一个bool值,代表这棵树是否为平衡二叉树。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(...原创 2018-08-20 22:36:48 · 328 阅读 · 0 评论 -
404.左叶子之和
计算给定二叉树的所有左叶子之和。示例: 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *lef...原创 2018-11-13 16:38:57 · 300 阅读 · 1 评论 -
331.验证二叉树的前序序列化
序列化二叉树的一种方法是使用前序遍历。当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录,例如 #。 _9_ / \ 3 2 / \ / \ 4 1 # 6/ \ / \ / \# # # # # #例如,上面的二叉树可以被序列化为字符串 "9,3,4,#,#,1,#,#,...原创 2018-11-08 17:39:07 · 383 阅读 · 0 评论 -
337.打家劫舍III
在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。示例 1:输入: [3,2...原创 2018-11-08 17:51:58 · 419 阅读 · 0 评论 -
427.建立四叉树
我们想要使用一棵四叉树来储存一个 N x N 的布尔值网络。网络中每一格的值只会是真或假。树的根结点代表整个网络。对于每个结点, 它将被分等成四个孩子结点直到这个区域内的值都是相同的.每个结点还有另外两个布尔变量: isLeaf 和 val。isLeaf 当这个节点是一个叶子结点时为真。val 变量储存叶子结点所代表的区域的值。你的任务是使用一个四叉树表示给定的网络。下面的例子将有助于你理...原创 2018-11-16 15:34:46 · 426 阅读 · 0 评论 -
429.N叉树的层序遍历
给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。例如,给定一个 3叉树 : 返回其层序遍历:[ [1], [3,2,4], [5,6]]说明:树的深度不会超过 1000。 树的节点总数不会超过 5000。/*// Definition for a Node.class Node {public: ...原创 2018-11-16 15:39:41 · 212 阅读 · 0 评论 -
637. 二叉树的层平均值
给定一个非空二叉树, 返回一个由每层节点平均值组成的数组.示例 1:输入: 3 / \ 9 20 / \ 15 7输出: [3, 14.5, 11]解释:第0层的平均值是 3, 第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11].注意:节点值的范围在32位有符号整数范围内。/*** Definiti...原创 2019-02-28 12:33:46 · 208 阅读 · 0 评论 -
648. 单词替换
在英语中,我们有一个叫做词根(root)的概念,它可以跟着其他一些词组成另一个较长的单词——我们称这个词为继承词(successor)。例如,词根an,跟随着单词other(其他),可以形成新的单词another(另一个)。现在,给定一个由许多词根组成的词典和一个句子。你需要将句子中的所有继承词用词根替换掉。如果继承词有许多可以形成它的词根,则用最短的词根替换它。你需要输出替换之后...原创 2019-03-01 21:21:40 · 401 阅读 · 0 评论 -
完全二叉树计数
给定一棵完全二叉树的根节点root,返回这棵树的节点个数。如果完全二叉树的节点数为N,请实现时间复杂度低于O(N)的解法。给定树的根结点root,请返回树的大小。方法一:递归法/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int ...原创 2018-08-20 09:59:32 · 419 阅读 · 0 评论 -
Invert Binary Tree
Invert a binary tree.Example:Input: 4 / \ 2 7 / \ / \1 3 6 9Output: 4 / \ 7 2 / \ / \9 6 3 1方法一:迭代法/** * Definition for a binary tree nod...原创 2018-08-06 12:32:02 · 228 阅读 · 0 评论 -
Path Sum III
You are given a binary tree in which each node contains an integer value.Find the number of paths that sum to a given value.The path does not need to start or end at the root or a leaf, but it mus...原创 2018-08-04 00:09:02 · 147 阅读 · 0 评论 -
字典树
Trie树的基本性质如下:根节点不包括字符,除根节点外每个节点包括一个字符。 从根节点到某一节点,路径上经过的字符连接起来,即为对应的字符串。 每个节点的所有子节点包含的字符串各不相同。Trie树节点数据结构定义如下:val表示该节点对应的字符 每个节点要定义一个大小为26的子结点指针数组,这样实现比较简单,但比较耗费内存 isWord标记从根节点到该节点是否表示一个单词,还是另...原创 2018-08-02 00:26:53 · 172 阅读 · 0 评论 -
Implement Trie (Prefix Tree)
Implement a trie with insert, search, and startsWith methods.Example:Trie trie = new Trie();trie.insert("apple");trie.search("apple"); // returns truetrie.search("app"); // returns false...原创 2018-08-02 00:27:02 · 166 阅读 · 0 评论 -
Word Search II
Given a 2D board and a list of words from the dictionary, find all words in the board.Each word must be constructed from letters of sequentially adjacent cell, where "adjacent" cells are those horiz...原创 2018-08-02 00:28:19 · 128 阅读 · 0 评论 -
Lowest Common Ancestor of a Binary Tree(递归法)
Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree./** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * ...原创 2018-08-07 00:05:03 · 603 阅读 · 0 评论