mirror of
				https://github.com/krahets/hello-algo.git
				synced 2025-11-04 14:18:20 +08:00 
			
		
		
		
	二叉搜索树: 排序小节 移动到 删除结点代码 的下面 (#340)
* 插入排序: 修改插入排序思想描述 * Update insertion_sort.md * 二叉搜索树: 排序小节 移动到 删除结点代码 的下面 * fix: 双点 -> 双向 --------- Co-authored-by: Yudong Jin <krahets@163.com>
This commit is contained in:
		@ -144,7 +144,7 @@ public class linkedlist_deque {
 | 
				
			|||||||
        deque.pushLast(3);
 | 
					        deque.pushLast(3);
 | 
				
			||||||
        deque.pushLast(2);
 | 
					        deque.pushLast(2);
 | 
				
			||||||
        deque.pushLast(5);
 | 
					        deque.pushLast(5);
 | 
				
			||||||
        System.out.print("双点队列 deque = ");
 | 
					        System.out.print("双向队列 deque = ");
 | 
				
			||||||
        deque.print();
 | 
					        deque.print();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /* 访问元素 */
 | 
					        /* 访问元素 */
 | 
				
			||||||
 | 
				
			|||||||
@ -531,14 +531,6 @@ comments: true
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
删除结点操作也使用 $O(\log n)$ 时间,其中查找待删除结点 $O(\log n)$ ,获取中序遍历后继结点 $O(\log n)$ 。
 | 
					删除结点操作也使用 $O(\log n)$ 时间,其中查找待删除结点 $O(\log n)$ ,获取中序遍历后继结点 $O(\log n)$ 。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### 排序
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
我们知道,「中序遍历」遵循“左 $\rightarrow$ 根 $\rightarrow$ 右”的遍历优先级,而二叉搜索树遵循“左子结点 $<$ 根结点 $<$ 右子结点”的大小关系。因此,在二叉搜索树中进行中序遍历时,总是会优先遍历下一个最小结点,从而得出一条重要性质:**二叉搜索树的中序遍历序列是升序的**。
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
借助中序遍历升序的性质,我们在二叉搜索树中获取有序数据仅需 $O(n)$ 时间,而无需额外排序,非常高效。
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||

 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=== "Java"
 | 
					=== "Java"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```java title="binary_search_tree.java"
 | 
					    ```java title="binary_search_tree.java"
 | 
				
			||||||
@ -1040,6 +1032,14 @@ comments: true
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    ```
 | 
					    ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 排序
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					我们知道,「中序遍历」遵循“左 $\rightarrow$ 根 $\rightarrow$ 右”的遍历优先级,而二叉搜索树遵循“左子结点 $<$ 根结点 $<$ 右子结点”的大小关系。因此,在二叉搜索树中进行中序遍历时,总是会优先遍历下一个最小结点,从而得出一条重要性质:**二叉搜索树的中序遍历序列是升序的**。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					借助中序遍历升序的性质,我们在二叉搜索树中获取有序数据仅需 $O(n)$ 时间,而无需额外排序,非常高效。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 7.3.2. 二叉搜索树的效率
 | 
					## 7.3.2. 二叉搜索树的效率
 | 
				
			||||||
 | 
					
 | 
				
			||||||
假设给定 $n$ 个数字,最常用的存储方式是「数组」,那么对于这串乱序的数字,常见操作的效率为:
 | 
					假设给定 $n$ 个数字,最常用的存储方式是「数组」,那么对于这串乱序的数字,常见操作的效率为:
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user