遍曆二叉樹就是遵循某種次序,訪問二叉樹中的所有節點,每個節點只訪問一次。二叉樹的遍曆有三種方式:前序走訪,中序遍曆和後序遍曆。所謂的前序,中序和後序是針對根節點來說的。前序走訪:首先訪問根節點,然後訪問左子樹,最後訪問右子樹。中序遍曆:首先訪問左子樹,然後訪問根節點,最後訪問右子樹。後續遍曆:首先訪問左子樹,然後訪問右子樹,最後訪問根節點。下面我們對鏈式儲存的二叉樹進行遍曆。範例程式碼:package mianshiti;import java.util.*;public class
這篇文章主要講述一個經典問題:作用選取範圍問題。並給出該問題的貪心演算法實現和動態規劃實現。對於該問題的描述,在演算法導論第16章給出了詳細的講解,這裡就不做解釋說明了,下面給出貪心演算法的Java語言實現:package chapter1.homework1;import java.util.*;public class ActivitySelector {private int activitiesNum=0;//活動總數private Activity[] activities=null;
由前面兩講,我們已經對二叉樹有所瞭解了,這一次我們來講一個特殊的二叉樹,即二叉排序樹,也稱二叉尋找樹。二叉排序樹滿足如下條件:(1)是二叉樹;(2)對於每一個節點P來說,若其左子樹不為空白,則其左子樹的各節點的值都小於節點P的值,若其右子樹不為空白,則其右子樹中所有節點的值都大於節點P的值。接下來我們使用JAVA語言實現二叉排序樹,僅列出插入和刪除函數的實現方式。package mianshiti;import java.util.*;public class BinarySearchTree
這篇文章裡的題目均整理於Cracking the Code Interview 2nd Edition。棧和隊列一般不會在面試題裡面單獨做為一整個題出現,往往都是作為一種輔助的資料結構,利用棧和隊列的性質去解決某一類題目。棧Stack的特點,先進後出,LIFO。棧的基本操作:push壓棧,pop出棧,peek返回棧頂元素但棧不變化。棧和隊列裡的元素實現 in
In an unsorted array of first N natural numbers. The array contains a number which is duplicated and one is missing. Find both the numbers. 一個含有前N個自然數的未排序數組,其中一個數出現了兩次,一個沒有出現,找出這兩個數。來源:careercup 亞馬遜美國面試題 http://www.careercup.com/question?id=13729662【
簡單LinkedList 的java代碼實現:public class LinkedListNode {public int value;public LinkedListNode next;public LinkedListNode(int value) {this.value = value;this.next = null;}}public class LinkedList {public LinkedListNode head;/*add an element to the tail*/
一、題目考慮這樣一種排序問題,即無法準確的知道等排序的各個數字到底是多大.對於其中的每個數字,我們只知道它落在實軸上的某個區間內.亦即,給定的 n 個形如[ai, bi ]的閉區間,其中ai,≤bi .演算法的目標是對這些區間進行模糊排序(fuzzy-sort),亦即,產生各區間的一個排序<i1, i2, i3, i4,…in >,使得存在一個 cj ∈[ai,