外贸网站 设计,甘肃网站定制开发,深圳快照优化,泰安做网站的公司数据结构与算法笔记#xff1a;树、链表、排序与队列实现 目录 数据结构与算法笔记#xff1a;树、链表、排序与队列实现#x1f332; 二叉树#xff08;Binary Tree#xff09;TreeNode 类定义二叉树前序遍历#xff08;递归#xff09;二叉树搜索#xff08;查找目标…数据结构与算法笔记树、链表、排序与队列实现目录数据结构与算法笔记树、链表、排序与队列实现 二叉树Binary TreeTreeNode 类定义二叉树前序遍历递归二叉树搜索查找目标值节点 单链表Linked ListListNode 节点类LinkedList 类实现 队列Queue - 链式实现QueueNode 节点类LinkedQueue 类实现11111栈Stack - 数组实现1111ArrayStack 类实现补充完整版 排序算法总结 排序算法实现选择排序Selection Sort归并排序Merge Sort✅ 总结本文基于手写笔记整理涵盖二叉树遍历、搜索、链表、栈、队列以及常见排序算法的Java实现。适合初学者快速掌握核心数据结构和算法逻辑。 二叉树Binary TreeTreeNode 类定义classTreeNode{intval;TreeNodeleft;TreeNoderight;publicTreeNode(intval){this.valval;}}二叉树前序遍历递归publicstaticvoidorder(TreeNodenode){if(nodenull)return;order(node.left);System.out.print(node.val );order(node.right);}⚠️ 注意此处为中序遍历代码顺序应为left - root - right。若需前序则应为root - left - right。二叉树搜索查找目标值节点publicstaticTreeNodesearch(TreeNodenode,inttarget){if(nodenull)returnnull;if(node.valtarget)returnnode;TreeNodeleftsearch(node.left,target);if(left!null)returnleft;returnsearch(node.right,target);} 单链表Linked ListListNode 节点类classListNode{intval;ListNodenext;publicListNode(intval){this.valval;}}LinkedList 类实现publicclassLinkedList{privateListNodehead;publicvoidaddFirst(intval){ListNodenewNodenewListNode(val);newNode.nexthead;headnewNode;}publicvoidprint(){ListNodecurhead;while(cur!null){System.out.print(cur.val );curcur.next;}System.out.println();}} 队列Queue - 链式实现QueueNode 节点类classQueueNode{intval;QueueNodenext;publicQueueNode(intval){this.valval;this.nextnull;}}LinkedQueue 类实现publicclassLinkedQueue{privateQueueNodefront;privateQueueNoderear;publicLinkedQueue(){this.frontnull;this.rearnull;}publicbooleanisEmpty(){returnfrontnull;}publicvoidenqueue(intval){QueueNodenewNodenewQueueNode(val);if(isEmpty()){frontrearnewNode;}else{rear.nextnewNode;rearnewNode;}}publicintdequeue(){if(isEmpty()){System.out.println(队列空);return-1;}intvalfront.val;frontfront.next;if(frontnull){rearnull;}returnval;}}11111栈Stack - 数组实现1111ArrayStack 类实现补充完整版publicclassArrayStack{privateint[]data;privateinttop;privateintcapacity;publicArrayStack(intsize){this.capacitysize;this.datanewint[capacity];this.top-1;}publicbooleanisEmpty(){returntop-1;}publicvoidpush(intval){if(topcapacity-1){System.out.println(栈满);return;}data[top]val;}publicintpop(){if(isEmpty()){System.out.println(栈空);return-1;}returndata[top--];}publicintpeek(){if(isEmpty()){System.out.println(栈空);return-1;}returndata[top];}} 排序算法总结算法时间复杂度空间复杂度特点快排O(n log n)O(log n)原地排序不稳定直接插入O(n²)O(1)稳定小规模高效选择排序O(n²)O(1)不稳定交换次数少归并排序O(n log n)O(n)稳定适合链表冒泡排序O(n²)O(1)稳定效率低 补充说明n个结点的完全二叉树有n1个空指针域第k层最多2^(k-1) 个结点叶子结点数≤ 总结点数 / 2度为2的结点数 叶子结点数 - 1满二叉树所有层都填满完全二叉树除最后一层外其余层全满 排序算法实现选择排序Selection SortpublicvoidselectionSort(int[]arr){for(inti0;iarr.length-1;i){intminIndexi;for(intji1;jarr.length;j){if(arr[j]arr[minIndex]){minIndexj;}}swap(arr,i,minIndex);}}privatevoidswap(int[]arr,inti,intj){inttemparr[i];arr[i]arr[j];arr[j]temp;}归并排序Merge SortpublicvoidmergeSort(int[]arr,intleft,intright){if(leftright)return;intmid(leftright)/2;mergeSort(arr,left,mid);mergeSort(arr,mid1,right);merge(arr,left,mid,right);}privatevoidmerge(int[]arr,intl,intm,intr){int[]tempnewint[r-l1];intil,jm1,k0;while(imjr){temp[k]arr[i]arr[j]?arr[i]:arr[j];}while(im)temp[k]arr[i];while(jr)temp[k]arr[j];System.arraycopy(temp,0,arr,l,temp.length);}✅ 总结本笔记系统梳理了以下内容二叉树基本操作遍历与搜索单链表增删查打印队列与栈链式与数组实现经典排序算法选择、归并复杂度分析时间与空间对比 建议结合代码调试运行加深对递归、指针、内存管理的理解。学习建议手写代码 → 理解逻辑 → 调试验证 → 优化改进掌握基础后可拓展BST、AVL、堆、哈希表等 欢迎关注我持续分享算法与数据结构干货本文由手写笔记整理而成欢迎点赞收藏一起进步