考研二戰日記 第七天 資料結構 樹和二叉樹(二)

2021-10-06 14:37:27 字數 2459 閱讀 1230

昨天梳理了資料結構的概念知識點,但是毫無疑問的,這一節是相當容易出演算法題的,今天就先總結下常見的演算法知識。

用陣列實現乙個簡單的二叉樹

public class arraybinarytree

public arraybinarytree(int deep)

public arraybinarytree(int deep, t rootdata)

public void add(int parentindex, t data, boolean left)

if (nodes[parentindex] == null)

if (left) else

}public boolean isempty()

/*** 獲取索引為index節點的父節點

** @param index

* @return

*/public t getparent(int index)

return (t) nodes[(index - 1) / 2];

}/**

* 獲取索引為index的右節點

** @param index

* @return

*/public t getright(int index)

return (t) nodes[index * 2 + 2];

}/**

* 獲取索引為index的左節點

** @param index

* @return

*/public t getleft(int index)

return (t) nodes[2 * index + 1];

}public t getroot()

public int indexof(t data)

}return -1;

}}

public class twolinkedbinarytree

public node(object data)

public node(object data, node left, node right)

@override

public string tostring()

}private node root;

public twolinkedbinarytree()

public twolinkedbinarytree(t data)

public node addnode(node parent, t data, boolean left)

if (parent == null)

if (left && parent.left != null)

if (!left && parent.right != null)

node node = new node(data);

if (left) else

return node;

}public boolean isempty()

public node getroot()

public t getleft(node parent)

public t getright(node parent)

}

前序遍歷

private void preorder(nodenode) 

system.out.println(node.value);//前面訪問節點

preorder(node.left);

preorder(node.right);

}

中序遍歷

private void inorder(nodenode) 

inorder(node.left);

system.out.println(node.value);//中間訪問節點

inorder(node.right);

}

後序遍歷

private void postorder(nodenode) 

postorder(node.left);

postorder(node.right);

system.out.println(node.value);//最後訪問節點

}

廣度優先遍歷

public void levelorder() 

if (node.right != null)

}}

當然除了這些**二叉樹,m叉樹,結點最大最小值問題,結點的刪除,查詢,插入和哈夫曼樹等內容

但是我想把這些內容留作自己的作業解決。

考研二戰日記 第14天 資料結構部分總結擴充套件

資料結構的考研部分內容大致差不多就這些天看的那些了,但是對於計算機專業的來說,無論是以後想往哪方面發展,演算法和資料結構這一部分無疑是重中之重。所以我們需要拓展一下視野 資料結構和演算法必知必會的50個 實現 陣列 問題 實現乙個支援動態擴容的陣列 問題 實現乙個大小固定的有序陣列,支援動態增刪改操...

資料結構 樹和二叉樹(二)

二叉樹 1 術語 其實樹中有很多術語的,這個是我們學習樹形結構必須掌握的。1 父節點,子節點,兄弟節點 這個就比較簡單了,b和c的父節點就是a,反過來說就是b和c是a的子節點。b和c就是兄弟節點。2 結點的度 其實 度 就是 分支數 比如a的分支數有兩個 b和c 那麼a的度為2。3 樹的度 看似比較...

資料結構 樹和二叉樹 二叉線索樹

遍歷二叉樹就是以一定的規則將二叉樹中的結點排列成乙個線性序列,從而得到二叉樹結點的各種遍歷序列。其實質就是對乙個非線性結構進行線性化操作,使在這個訪問序列中每乙個結點 除了第乙個和最後乙個 都有乙個直接前驅和直接後繼。在二叉樹的鏈式儲存中,只能體現出父子關係,不能直接得到結點在遍歷中的前驅和後繼。前...