// definition for a binary tree node.
class
treenode
}
方法一:遞迴方式
最容易想到的方式最先實現。
//遞迴方式
public treenode inverttree(treenode root)
//遞迴反轉左右子樹
treenode temp = root.left;
root.left = inverttree(root.right);
root.right = inverttree(temp);
return root;
}
方法二:非遞迴層次遍歷,借助棧
public treenode inverttree2(treenode root)
stack
stack
=new
stack
<>();
stack
.push(root);//先將根節點壓入堆疊
while (stack
.size() >
0) //右子樹不為空,將右子樹入棧
if (temp.right !=
null)
}return root;
}
方法三:非遞迴層次遍歷,借助於佇列,操作與棧類似,只不過元素是先進先出。
public treenode inverttree3(treenode root)
//linkedlist實現了集合框架的queue介面
queue
queue
=new linkedlist<>();
queue
.offer(root);//加入元素
while (queue
.size() >
0) if (temp.right !=
null)
}return root;
}
LeetCode (二叉樹)反轉二叉樹
遞迴交換每乙個節點的左右子樹,重點在於訪問每乙個節點,然後交換左右子樹 definition for a binary tree node.struct treenode struct treenode inverttree struct treenode root 由於至少要講每乙個節點都訪問一次...
二叉樹反轉
二叉樹反轉,遞迴實現比較簡單,只需要交換父母節點的左右子節點就行,遞迴反轉左右子節點。homebrew作者面試google時解不出這道題而被拒,本文給出c實現的二叉樹反轉,包括前中後遍歷,二叉樹的建立等。反轉 如下 void inversebtree tnode root tnode tmp roo...
java版遍歷二叉樹
首先編寫二叉樹類binarytree,如下 package package2 public class binarytree public void insert binarytree root,int data else else else 當建立好二叉樹類後可以建立二叉樹例項,並實現二叉樹的先根...