数据结构的基本操作

一、数据结构的基本操作

对于任何数据结构,本质操作为:增删查改。
具体操作本质:遍历 + 访问

1.1 典型遍历框架

1)数组,线性结构

void traverse(int[] arr){
    
    
	for(int i = 0 ; i < arr.length ; i++){
    
    
		//迭代访问arr[i]
	}
}

2)链表,线性or非线性结构

class ListNode{
    
    
	int val;
	ListNode next;
}
void traverse(ListNode head){
    
    
	for(ListNode p = head; p->next != NULL ; p = p->next){
    
    
		//迭代访问p->val
	}
}
void traverse(ListNode head){
    
    
	//访问 head.val
	traverse(head->next);
}

1.2具体遍历框架

1)二叉树遍历框架

class TreeNode{
    
    
	int val;
	TreeNode left, right;
}
void traverse(TreeNode root){
    
    
	//访问root.val
	traverse(root.left);
	traverse(root.right);
}

二叉树本质为每个节点带有两条指针的链表。
若是三叉树、四叉树…n叉树要怎么遍历呢?沿着这条思路就很简单了。

2)N叉树遍历框架

class TreeNode{
    
    
	int val;
	TreeNode[] children;
}
void traverse(TreeNode root){
    
    
	//访问root.val
	for(TreeNode child : root.children){
    
    
		traverse(child);
	}
}

N叉树可以扩展为图的遍历,因为图就是好几颗N叉树的结合体。

猜你喜欢

转载自blog.csdn.net/fakejvruo/article/details/129154508
今日推荐