我的 CSDN 博客:blog.csdn.net/gdutxiaoxu我的掘金:juejin.im/user/220747…github: github.com/gdutxiaoxu/微信公众号:程序员徐公 前言 说到树的四种遍历方式,可能大家第一时间都会想到它的四种遍历方式,并快速说了它的特点。 ...
分类:
编程语言 时间:
2021-04-09 13:01:00
阅读次数:
0
给定一个单向链表的头结点,要求将链表反转,并返回新的头结点。 一、迭代实现 思路:遍历链表,依次调整每个节点的指针域。 定义 结点p指向当前节点 结点q指向当前节点的下一个结点(p->next非空时) 结点r指向当前节点的前一个结点 节点newhead指向新头结点() 初始 p=head,q=NUL ...
分类:
编程语言 时间:
2020-09-17 16:07:27
阅读次数:
24
//前序遍历 /** * 根-左-右,所以入栈的时候要相反,有右节点则加入右节点,有左节点则加入左节点,每车循环的时候,弹一个 */ public ArrayList<Integer> preorderTraversal(TreeNode root) { ArrayList<Integer> lis ...
分类:
编程语言 时间:
2020-09-11 14:23:16
阅读次数:
41
先序遍历:根-->左-->右的形式 public static void preOrderTraveralWithStsck(Node node){ Stack<Node> stack = new Stack(); //当节点的左右孩子全为空并且,栈空表示遍历完毕 while (node != nu ...
分类:
编程语言 时间:
2020-07-27 09:42:07
阅读次数:
81
前言 昨天和今天复习了二叉树的前序遍历、中序遍历和后序遍历,找到了一种统一的非递归的方法(即使用一个思路非递归实现二叉树的前序、中序和后序遍历)。 思路 思路本质上还是递归,只不过不通过递归函数显示地递归,而是通过栈模拟递归的过程。 具体思路:https://leetcode-cn.com/prob ...
分类:
其他好文 时间:
2020-07-13 15:41:18
阅读次数:
65
前序遍历的非递归实现 中序遍历的非递归实现 1 void InOrder2(BTNode *root) { 2 BTNode *p = root; 3 stack<BTNode *> S; 4 while (p != NULL || !S.empty()) { 5 if (p) { // 找到树中最 ...
分类:
编程语言 时间:
2020-07-11 19:21:14
阅读次数:
59
0 1 1 2 3 5 8 11 19 30 49 > 斐波拉契数列 //非递归实现public int fib(int n) { if(n == 0) return 0; if(n == 1) return 1; int a = 0; int b = 1; int ret = 0; while ( ...
分类:
其他好文 时间:
2020-07-10 18:51:01
阅读次数:
48
根据自己对于对于遍历的理解 前序遍历:中左右 中序遍历:左中右 后序遍历:左右中 对于前序和中序,可以只改变一些printf的顺序 所以前中后名称都是针对中间(根)的结点,所以后序遍历是不可以直接移动printf的位置的,因为对于每个结点不能直接出栈,出栈输出的时候需要判断2点 1.这个节点有没有右 ...
分类:
其他好文 时间:
2020-06-28 22:34:15
阅读次数:
72
##二分查找的递归与非递归实现 非递归实现: public int bsearch(int[] a, int n, int value) { int low = 0; int high = n - 1; while (low <= high) { int mid = (low + high) / 2 ...
分类:
其他好文 时间:
2020-05-28 21:38:20
阅读次数:
53
class Solution { public: void preorderTraversal(TreeNode* root) { //1.先逐个访问左路结点,并将其入栈 //2.再访问栈顶元素的右子树 stack<TreeNode*> helper; TreeNode* cur=root; //只 ...
分类:
其他好文 时间:
2020-05-22 00:09:07
阅读次数:
59