刷题
wwqicode
这个作者很懒,什么都没留下…
展开
-
从中序后序遍历构造二叉树
中序遍历+前序/后序遍历,可以唯一确定一个二叉树本题后序遍历从右向左是树中从右向左的节点通过后序遍历确定节点的值,在中序遍历中该节点位置可以确定左右子树节点值通过中序遍历中确定的节点位置,知道左右子树节点个数,因为中序遍历数组个数和后序遍历数组个数相同,从而确定后序遍历数组/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * ..原创 2021-03-09 16:39:32 · 124 阅读 · 0 评论 -
对称二叉树 递归
/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */func isSymmetric(root *TreeNode) bool {//左子树的左孩子和右子树的右孩子对称 if root==nil{ return true } return i...原创 2021-03-06 22:50:22 · 134 阅读 · 0 评论 -
二叉树最大深度 递归
/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */func maxDepth(root *TreeNode) int { if root==nil{ return 0 } ldepth := maxDepth(root.Left) r...原创 2021-03-06 21:58:24 · 103 阅读 · 0 评论 -
单链表翻转
递归代码如下/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func reverseList(head *ListNode) *ListNode { if head == nil{ return head } if head.Next == nil{ return ..转载 2021-03-06 11:22:27 · 75 阅读 · 0 评论 -
二进制链表转整数
位运算很快func getDecimalValue(head *ListNode) int {/* numlist := make([]int,0) //注意这里参数为0,即空的数组。否则为n个0 count := 1 p := head for p.Next!=nil{ numlist = append(numlist, p.Val) //低index是数字的高位 count++ p = p.Next..原创 2021-03-06 11:20:18 · 162 阅读 · 0 评论 -
双指针,找第一个公共节点
一个双指针问题两个链表,找出它们的第一个公共节点。我们使用两个指针 node1,node2 分别指向两个链表 headA,headB 的头结点,然后同时分别逐结点遍历,当 node1 到达链表 headA 的末尾时,重新定位到链表 headB 的头结点;当 node2 到达链表 headB 的末尾时,重新定位到链表 headA 的头结点。这样,当它们相遇时,所指向的结点就是第一个公共结点。好理解的解释:两个链表长度分别为L1+C、L2+C, C为公共部分的长度,按照楼主的做法: 第.原创 2021-03-05 23:34:54 · 132 阅读 · 2 评论