二叉树 递归
文章平均质量分 58
wnjason
这个作者很懒,什么都没留下…
展开
-
LeetCode---Populating Next Right Pointers in Each Node
题目大意: 给出一个二叉树,使得二叉树中每个节点都有一个指针指向其右边的节点。如果节点不存在右边的节点则指针为空。 算法思想: 1.判断根节点是否为空,不空则将更节点和其层号放入队列。 2.当队列不空时,取队头元素cp的并将其移出队列,再取队列一个元素temp. 3.判断temp所记录的节点是否为空且该节点的层号是否和cp的层号相同,如果相同cp的右边节点为temp,否则cp的右边节点为原创 2015-09-25 16:48:25 · 260 阅读 · 0 评论 -
LeetCode---Path Sum
题目大意:给出一颗二叉树和一个从根节点到叶子节点的路径和,判断二叉树中是否存在这样的路径和。 算法思想: 首先判断节点是否为空,若为空直接返回false;若不空,则判断该节点是否是叶子节点,如果是叶子节点且节点值和路径和相同则返回true,如果是叶子节点且节点值和路径和不同则返回false,如果不是叶子节点,则递归返回 左子树和右子树的逻辑或值。 代码如下: /** * Definiti原创 2015-10-07 00:18:27 · 305 阅读 · 0 评论 -
LeetCode---Maximum Depth of Binary Tree
题目大意:给出一个二叉树,求出该二叉树的最大深度。最大深度是指从根节点沿着最长路径到叶子节点的节点数。 算法思想: 采用递归遍历二叉树的方法,求出其左右子树的最大深度+1. 代码如下: /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left;原创 2015-09-21 15:21:44 · 349 阅读 · 0 评论 -
LeetCode---Invert Binary Tree
题目大意:转换二叉树,交换二叉树的左右子树。 算法思想: 采用递归。当根节点为空的时候,返回空;否则,交换二叉树的左右子树,返回根节点。 代码如下: /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *ri原创 2015-09-23 16:23:13 · 281 阅读 · 0 评论 -
LeetCode---Binary Tree Preorder Traversal
题目大意:给出一个二叉树,返回其前序遍历。 算法思想: 如果当前节点不空,将节点放入容器,然后递归遍历左右子树。 代码如下: /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; *原创 2015-09-24 02:19:33 · 299 阅读 · 0 评论 -
LeetCode---Binary Tree Inorder Traversal
题目大意:给出一个二叉树,返回其中序遍历的序列。 算法思想: 当节点不空的时候,先递归遍历左子树,然后将节点值放入容器中,然后在递归遍历右子树,最会返回容器。 代码如下: /** * Definition for a binary trene node. * struct TreeNode { * int val; * TreeNode *left; *原创 2015-09-24 02:28:48 · 303 阅读 · 0 评论 -
LeetCode---Convert Sorted List to Binary Search Tree
题目大意:给出一个已排好序的升序链表,将其转化为一颗高度平衡的二叉搜索树。 算分思想: 1.遍历一遍链表,将链表中的元素放在容器中。 2.采用分治法将一个链表分为两半,一半对应BST的左子树,一半对应BST的右子树。 3.递归生成转换好的二叉搜索树(BST)。 代码如下: /** * Definition for singly-linked list. * struct ListN原创 2015-10-14 20:41:37 · 405 阅读 · 0 评论 -
LeetCode---Construct Binary Tree from Preorder and Inorder Traversal
题目大意:给出二叉树的前序遍历结果和中序遍历结果,根据这两种遍历结果构造二叉树。 算法思想: 1.根据前序遍历的特点,前序遍历结果的首节点是二叉树的根节点。创建该节点。 2.找出根节点在中序遍历的位置。由中序遍历的特点可知,根节点将中序遍历的结果分为两部分,左部分为二叉树的左子树节点,右部分为二叉树的右子树节点。 3.计算出左子树包含的节点个数。 4.递归调用构造出二叉树的左右子树。原创 2015-10-30 13:32:06 · 365 阅读 · 0 评论